%input mp-tool; def projectyz( expr theta, phi ) = (cosd(theta)*sind(phi),sind(theta)) enddef; numeric vertn, horin, grids, thex, they, varc, xcomp; numeric ymax, xmax, i, j, size, u, ycomp, theta, phi; numeric power; pair actpos, direct, one, two; u := 0.5mm; power := 0.8; vertn := 20; horin := 41; size := 3u; grids := 8u; ymax := 0.5*(vertn-1); xmax := 0.5*(horin-1); varc := 90/ymax; beginfig(0); % splay pickup pencircle scaled u; for i=-xmax upto xmax: for j=-ymax upto ymax: actpos:=grids*(i,j); thex:=i*varc; they:=j*varc; theta:=90*(cosd(they)**power); phi:=0; direct:=projectyz(theta,phi); one:=actpos-size*direct; two:=actpos+size*direct; draw one--two; endfor; endfor; endfig; beginfig(2); % bend pickup pencircle scaled u; for i=-xmax upto xmax: for j=-ymax upto ymax: actpos:=grids*(i,j); thex:=i*varc; they:=j*varc; theta:=90*((1-cosd(they))**(1/power)); phi:=0; direct:=projectyz(theta,phi); one:=actpos-size*direct; two:=actpos+size*direct; draw one--two; endfor; endfor; endfig; beginfig(4); % twist pickup pencircle scaled u; for i=-xmax upto xmax: for j=-ymax upto ymax: actpos:=grids*(i,j); thex:=i*varc; they:=j*varc; theta:=0; phi:=90*(cosd(they)**power); direct:=projectyz(theta,phi); one:=actpos-size*direct; two:=actpos+size*direct; draw one--two; endfor; endfor; endfig; beginfig(3); % splaytwist in splay pickup pencircle scaled u; for i=-xmax upto xmax: for j=-ymax upto ymax: actpos:=grids*(i,j); thex:=i*varc; they:=j*varc; theta:=90*cosd(they)*cosd(thex); phi:=60*sind(2*they)*sind(thex); direct:=projectyz(theta,phi); one:=actpos-size*direct; two:=actpos+size*direct; draw one--two; endfor; endfor; endfig; beginfig(5); % splaytwist in twist pickup pencircle scaled u; for i=-xmax upto xmax: for j=-ymax upto ymax: actpos:=grids*(i,j); thex:=i*varc; they:=j*varc; theta:=30*sind(2*they)*sind(thex); phi:=-90*cosd(they)*cosd(thex); direct:=projectyz(theta,phi); one:=actpos-size*direct; two:=actpos+size*direct; draw one--two; endfor; endfor; endfig; beginfig(7); % splaytwist in bend pickup pencircle scaled u; for i=-xmax upto xmax: for j=-ymax upto ymax: actpos:=grids*(i,j); thex:=i*varc; they:=j*varc; theta:=90*cosd(they)*sind(thex); phi:=30*sind(2*they)*cosd(thex); direct:=(cosd(theta)*sind(phi),cosd(theta)*cosd(phi)); one:=actpos-size*direct; two:=actpos+size*direct; draw one--two; endfor; endfor; endfig; beginfig(1); % splay-bend wall pickup pencircle scaled u; for i=-xmax upto xmax: for j=-ymax upto ymax: actpos:=grids*(i,j); thex:=i*varc; they:=j*varc; theta:=0; phi:=2*angle(1,mexp(thex*9)); direct:=(cosd(theta)*sind(phi),cosd(theta)*cosd(phi)); one:=actpos-size*direct; two:=actpos+size*direct; draw one--two; endfor; endfor; endfig; prologues := 1; beginfig(6); pickup pencircle scaled u; numeric rescal; rescal = 0.15; for i=-xmax upto xmax: for j=-ymax upto ymax: actpos:=grids*(i,j); thex:=i*rescal; they:=j*rescal; direct:=unitvector((1,they-thex)); one:=actpos-size*direct; two:=actpos+size*direct; draw one--two; endfor; endfor; endfig; end;