reino@cs.eur.nl (Reino de Boer) (06/29/90)
Here is a version of the recycle symbol in METAFONT. Maybe someone feels the need to convert this to postscript. input localdevice; mode=localfont; mag=4; font_size 10pt#; numeric d[]; wd#=11pt#; % width of bounding box u#:=1wd#/35; % arbitrary unit px#:=2/3pt#; % 1/4u#; % pen thickness in x-direction mode_setup; py#:=.9px#; % pen thickness in y-direction define_pixels(u); define_blacker_pixels(px,py); % generic code for recycle symbol % % parameters: % code = letter-code for this symbol % gap = distance between the tip of one arrow and the tail of another % hgt = height of an arrow-tip % wdt = width of an arrow at its widest % bnd = width of arrow-band % dis = distance of center of symbol to outer curve % def generic(expr code,gap,hgt,wdt,bnd,dis) = d1#:=gap*u#; d2#:=hgt*u#; d3#:=wdt*u#; d4#:=bnd*u#; d5#:=dis*u#; dp#:=(d3#-d4#)/2; define_pixels(d1,d2,d3,d4,d5); beginchar(code,wd#,wd#,dp#); "The recycle symbol"; pair a[], b[], c[], center; numeric ax; transform t; pickup pencircle xscaled px yscaled py; % define the three triangles a1=(0,0); b1=(w,0); xpart(c1)=xpart(c2)=xpart(c3)=xpart(center)=.5w; ypart(c1)/w=sind 60; ypart(a3)=ypart(b3)=d4; xpart(a3)/ypart(a3)=ypart(c1)/xpart(c1); xpart(b3)=w-xpart(a3); (ypart(c3)-d4)/(xpart(c3)-xpart(a3))=ypart(c1)/xpart(c1); a2=.5[a1,a3]; b2=.5[b1,b3]; c2=.5[c1,c3]; ypart(center)/xpart(center)=xpart(c1)/ypart(c1); % makelabel("a1",a1); % makelabel("a2",a2); % makelabel("a3",a3); % makelabel("b1",b1); % makelabel("b2",b2); % makelabel("b3",b3); % makelabel("c1",c1); % makelabel("c2",c2); % makelabel("c3",c3); ax=length(center-a1); % define control-points for one arrow x1=x2=.5w-.5d1; y1=0; y2=d4; % z1, z2 z10=((ax-d5)/ax)[a1,center]; % z10 (x9-x10)/(.5d4)=.5w/length(c1-a1); (y10-y9)/(.5d4)=ypart(c1)/length(c1-a1); % z9 z3=2[z9,z10]; % z3 z6=((.5length(c2-a2)-.5d1)/length(c2-a2))[a2,c2]; % z6 z11=((.5length(c2-a2)-.5d1-d2)/length(c2-a2))[a2,c2]; % z11 z4=((.5length(c1-a1)-.5d1-d2)/length(c1-a1))[a1,c1]; % z4 z8=((.5length(c3-a3)-.5d1-d2)/length(c3-a3))[a3,c3]; % z8 z5=((d4+d3)/(2d4))[z8,z4]; % z5 z7=((d4+d3)/(2d4))[z4,z8]; % z7 % draw one arrow draw z1..z2; draw z4..z5; draw z5..z6; draw z6..z7; draw z7..z8; draw z3..z9; draw z2{left}..tension 3..z3{z3-z9}..tension 3..{c1-a1}z4; unfill z9..tension 3..{c3-a3}z8--z4{a1-c1}..tension 3..{z9-z3}z3--z9..cycle; draw z9--z3..tension 3..{c1-a1}z4; draw z1{a1}..tension 3..{z3-z9}z9..tension 3..{c3-a3}z8; draw z1{a1}..tension 3..{z3-z9}z9..tension 3..{c3-a3}z8; t=identity rotatedaround(center,-120); % rotate the arrow draw (z1..z2) transformed t; draw (z4..z5) transformed t; draw (z5..z6) transformed t; draw (z6..z7) transformed t; draw (z7..z8) transformed t; draw (z3..z9) transformed t; draw (z2{left}..tension 3..z3{z3-z9}..tension 3..{c1-a1}z4) transformed t; unfill (z9..tension 3..{c3-a3}z8--z4{a1-c1}..tension 3..{z9-z3}z3--z9..cycle) transformed t; draw (z9--z3..tension 3..{c1-a1}z4) transformed t; draw (z1{a1}..tension 3..{z3-z9}z9..tension 3..{c3-a3}z8) transformed t; draw (z1{a1}..tension 3..{z3-z9}z9..tension 3..{c3-a3}z8) transformed t; % and: the third arrow draw (z1..z2) transformed (t transformed t); draw (z4..z5) transformed (t transformed t); draw (z5..z6) transformed (t transformed t); draw (z6..z7) transformed (t transformed t); draw (z7..z8) transformed (t transformed t); draw (z3..z9) transformed (t transformed t); draw (z2{left}..tension 3..z3{z3-z9}..tension 3..{c1-a1}z4) transformed (t transformed t); unfill (z9..tension 3..{c3-a3}z8--z4{a1-c1}..tension 3..{z9-z3}z3--z9..cycle) transformed (t transformed t); draw (z9--z3..tension 3..{c1-a1}z4) transformed (t transformed t); draw (z1{a1}..tension 3..{z3-z9}z9..tension 3..{c3-a3}z8) transformed (t transformed t); draw (z1{a1}..tension 3..{z3-z9}z9..tension 3..{c3-a3}z8) transformed (t transformed t); % penlabels(1,2,3,4,5,6,7,8,9,10,11); endchar; enddef; % To test various recycle symbols, try to vary the parameters according % to the following scheme: % asc:=0; % for pa = 3 step 1 until 4: % for pb = 3 step 1 until 3: % for pc = 8 step 1 until 8: % for pd = 4 step 1 until 4: % for pe = 13 step 1 until 14: % generic(asc,pa,pb,pc,pd,pe); % asc:=asc+1; % endfor; % endfor; % endfor; % endfor; % endfor; % one particular symbol (which pleased us enough for the experiment) generic("R",4,3,8,4,14); end -- Reino R. A. de Boer "We want to build the right product right, right?" Erasmus University Rotterdam ( Informatica ) e-mail: reino@cs.eur.nl