diff options
Diffstat (limited to 'Master/texmf-dist/doc/metapost/featpost/example/ffcbob.mp')
-rw-r--r-- | Master/texmf-dist/doc/metapost/featpost/example/ffcbob.mp | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/ffcbob.mp b/Master/texmf-dist/doc/metapost/featpost/example/ffcbob.mp new file mode 100644 index 00000000000..36a95734300 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/featpost/example/ffcbob.mp @@ -0,0 +1,84 @@ +% ffcbob.mp +% L. Nobre G. +% 2003 + +input featpost3Dplus2D; + +f := 2*(15,0,2); +Spread := 20; + +beginfig(1); + numeric phi, theta, back, numbacks, minnum, maxnum; + phi = 30; + theta = 80; + back = 7; + numbacks = 30; + minnum = 3; + maxnum = 15; + numeric upl[], dol[], pos[], len[], rai[] rao[]; + upl1=1; dol1=17;pos1=-5.0; len1=2.0; rai1=1.5; rao1=6.5; + upl2=2; dol2=16;pos2=-3.0; len2=0.8; rai2=1.5; rao2=6.3; + upl3=3; dol3=15;pos3=-2.2; len3=0.4; rai3=1.5; rao3=4.8; + upl4=4; dol4=14;pos4=-1.8; len4=0.4; rai4=1.5; rao4=4.4; + upl5=5; dol5=13;pos5=-1.4; len5=0.4; rai5=1.5; rao5=4.2; + upl6=6; dol6=11;pos6=-1.0; len6=0.2; rai6=1.5; rao6=3.2; + upl7=7; dol7=12;pos7=-1.0; len7=0.2; rai7=4.0; rao7=4.6; + upl8=8; dol8=10;pos8=-0.8; len8=0.6; rai8=1.5; rao8=3.2; + upl9=9; dol9=7; pos9=-0.2; len9=0.4; rai9=1.5; rao9=3.2; + upl10=10;dol10=9;pos10=-0.2;len10=0.2;rai10=4.0;rao10=4.4; + upl11=11;dol11=8;pos11=0.0; len11=0.2;rai11=4.0;rao11=4.6; + upl12=12;dol12=6;pos12=0.2; len12=0.8;rai12=1.5;rao12=4.8; + upl13=13;dol13=5;pos13=1.0; len13=0.4;rai13=1.5;rao13=4.4; + upl14=14;dol14=3;pos14=1.4; len14=0.2;rai14=1.5;rao14=4.4; + upl15=15;dol15=4;pos15=1.4; len15=0.2;rai15=4.8;rao15=6.3; + upl16=16;dol16=2;pos16=1.6; len16=0.6;rai16=1.5;rao16=6.3; + upl17=17;dol17=1;pos17=2.2; len17=2.0;rai17=1.5;rao17=6.5; + color axe; + axe = (cosd(phi)*cosd(theta),sind(phi)*cosd(theta),sind(theta)); + numeric i; + for i=0 upto numbacks: + draw rp(back*(1,2*i/numbacks-1,-1))-- + rp(back*(-1,2*i/numbacks-1,-1))-- + rp(back*(-1,2*i/numbacks-1,1)) withcolor 0.7background; + endfor; + numeric crux; + crux = cdotprod( f, axe ); + numeric j, k; + if crux <= pos[minnum+1]: + for i=minnum upto maxnum: + j := maxnum; + forever: + exitunless dol[j] <> i; + j := decr( j ); + endfor; +% rigorousdisc(rai[j],true,axe*pos[j],rao[j],axe*len[j]); + rigorousdisc(0,true,axe*pos[j],rao[j],axe*len[j]); + endfor; + elseif crux > pos[maxnum]: + for i=minnum upto maxnum: +% rigorousdisc(rai[i],true,axe*pos[i],rao[i],axe*len[i]); + rigorousdisc(0,true,axe*pos[i],rao[i],axe*len[i]); + endfor; + else: + k := minnum+2; + forever: + exitif crux <= pos[k]; + k := incr( k ); + endfor; + for i=minnum upto k-1: +% rigorousdisc(rai[i],true,axe*pos[i],rao[i],axe*len[i]); + rigorousdisc(0,true,axe*pos[i],rao[i],axe*len[i]); + endfor; + for i=k upto maxnum: + j := maxnum; + forever: + exitunless dol[j] <> i; + j := decr( j ); + endfor; +% rigorousdisc(rai[j],true,axe*pos[j],rao[j],axe*len[j]); + rigorousdisc(0,true,axe*pos[j],rao[j],axe*len[j]); + endfor; + fi; +endfig; + +end. |