diff options
author | Karl Berry <karl@freefriends.org> | 2011-12-03 16:47:39 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-12-03 16:47:39 +0000 |
commit | 97e4684a37e4899e8cdd42ab670b6e25dd319d1a (patch) | |
tree | bc263a56d75c177b79ae13c6e6ec7a3c30278dbf /Master/texmf-dist/doc/metapost/featpost/example/mypatentpieces.mp | |
parent | a2c8654f8955a0d35c8b0c2d1752a506a426681b (diff) |
featpost (17nov11)
git-svn-id: svn://tug.org/texlive/trunk@24738 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/metapost/featpost/example/mypatentpieces.mp')
-rw-r--r-- | Master/texmf-dist/doc/metapost/featpost/example/mypatentpieces.mp | 634 |
1 files changed, 634 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/metapost/featpost/example/mypatentpieces.mp b/Master/texmf-dist/doc/metapost/featpost/example/mypatentpieces.mp new file mode 100644 index 00000000000..c2af24f77c7 --- /dev/null +++ b/Master/texmf-dist/doc/metapost/featpost/example/mypatentpieces.mp @@ -0,0 +1,634 @@ +% mypatentpieces.mp +% L. Nobre G. +% IYP (2005) + +input featpost3Dplus2D; + +prologues := 1; + +vardef P@# = rp(V@#) enddef; + +%f := 2*(17,7,9); +f := 2*(21,5,8); +Spread := 36; +background := white; + +numeric u, i; +u = 0.1; +V1 := (0,0,0); +V2 := (0,0,4u); +V3 := (0,16u,4u); +V4 := (4u,16u,4u); +V5 := (4u,16u,8u); +V6 := (0,16u,8u); +V7 := (0,24u,16u); +V8 := (4u,24u,16u); +V9 := (4u,35u,4u); +V10:= (4u,35u,0); +V11:= (16u,23u,0); +V12:= (16u,23u,4u); +V13:= (16u,0,4u); +V14:= (16u,0,0); +V15:= (0,43u,8u); +V16:= (4u,43u,8u); +V17:= (8u,8u,0); +V18:= (4u,43u,16u); +V19:= (0,43u,16u); + +V22:= (-62.5u+16u,0,0); +V23:= (62.5u-16u,0,0); +V24:= (-62.5u,0,0); +V25:= (62.5u,0,0); +V26:= (-62.5u,0,4u); +V27:= (62.5u,0,4u); +V28:= (-62.5u+16u,0,4u); +V29:= (62.5u-16u,0,4u); + +V40:= (95.5u,-43u,-8u); % zero +V42:= (-62.5u+21u,-43u,8u); % 200 +V43:= (-62.5u+17u,-8u,-43u); %300 +V44:= (95.5u,8u,-43u); % 400 +V55:= (-32u,-4u,-35u); % 500 +V56:= (82u,-35.25u,-4u); % 600 %%% +V57:= (50u,0,-35u); % 700 +V58:= (0,-35.13u,0); % 800 %%% + +def indicp( expr Ind ) = + ( rp(V[Ind])--rp( (X(V[Ind]),Y(V[Ind]),40u) ) ) +enddef; + +def indicl( expr Ind ) = + ( rp((X(V[Ind]),Y(V[Ind]),40u)) ) +enddef; + +% 100 +for i=1 upto 19: + V[i+100] := (X(V[i]),-Y(V[i]),Z(V[i])); +endfor; + +% 200 +for i=101 upto 119: + V[i+100] := (X(V[i]),-Y(V[i]),-Z(V[i])); +endfor; + +% 300 +for i=101 upto 119: + V[i+200] := (X(V[i]),Z(V[i]),-Y(V[i])); +endfor; + +% 400 +for i=301 upto 319: + V[i+100] := (-X(V[i]),-Y(V[i]),Z(V[i])); +endfor; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% zero +for i=1 upto 19: + V[i] := V[i]+V40; +endfor; + +% 200 +for i=201 upto 219: + V[i] := V[i]+V42; +endfor; + +% 300 +for i=301 upto 319: + V[i] := V[i]+V43; +endfor; + +% 400 +for i=401 upto 419: + V[i] := V[i]+V44; +endfor; + +% 500 +for i=22 upto 29: + V[i+500] := (X(V[i]),Z(V[i]),-Y(V[i]))+V55; +endfor; + +% 600 +for i=22 upto 29: + V[i+600] := V[i]+V56; +endfor; + +% 700 +for i=22 upto 29: + V[i+700] := (X(V[i]),Z(V[i]),-Y(V[i]))+V57; +endfor; + +% 800 +for i=22 upto 29: + V[i+800] := V[i]+V58; +endfor; + +numeric dhip, dcat, dhei, dang; +dhip = X(V627)-X(V824); +dcat = X(V25)-X(V24); +dhei = dcat +-+ (0.5*dhip); +dang = angle(0.5*dhip,dhei); + +% 1000 +for i=822 upto 829: + V[i+100] := (X(V[i])*cosd(dang)-Y(V[i])*sind(dang), + X(V[i])*sind(dang)+Y(V[i])*cosd(dang),Z(V[i])); +endfor; +for i=922 upto 929: + V[i+100] := V[i]+V627-V925; +endfor; + +% 900 +for i=622 upto 629: + V[i-500] := (X(V[i])*cosd(dang)+Y(V[i])*sind(dang), + -X(V[i])*sind(dang)+Y(V[i])*cosd(dang),Z(V[i])); +endfor; +for i=122 upto 129: + V[i+800] := V[i]+V824-V126; +endfor; + +beginfig(1); + pen penedge; + penedge= pencircle scaled 1.5pt; + pickup penedge; + path refillpat[], retouchpat[]; + + path pat[]; + pat1 = P309--P312--P313--P314--P311--P310--P309--P304--P305 + --P308--P307; + pat2 = P311--P312; + pat11 = P313--P302--P303; + pat3 = pat11 cutafter pat1; + pat10 = P301-- for i=-90 step 5 until 85: + rp(V315+(0,8u*sind(i),8u*cosd(i))).. + endfor P319--P307; + pat4 = P310-- for i=-90 step 5 until 85: + rp(V316+(0,8u*sind(i),8u*cosd(i))).. + endfor P318--P308; + pair auxp,auxP; + auxp = point 0 of spatialhalfcircle(V315,red,8.05u,false); + auxP = point 0 of spatialhalfcircle(V316,red,8.05u,false); + pat9 = P315--auxp; + pat5 = pat10 cutbefore pat9; + pat6 = auxp--auxP; + for i=1 upto 6: + draw pat[i]; + endfor; + fakehole(V315,red*4u, 2u ); + fakehole(V317,green*4u, 2u ); + V388 := 0.7[V308,V318]; + V379 := 0.7[V307,V319]; + refillpat2 = P309--P304--P305--P308--P307--P379--P388--cycle; + retouchpat3 = P309--P304--P305--P308--P307--P379; + retouchpat4 = P388--P308; + + + path pat[]; + pat1 = for i=-90 step 2 until 90: + rp(V522+(-2u*cosd(i),0,2u*sind(i)))... + endfor + for i=-90 step 2 until 90: + rp(V523+(2u*cosd(i),0,2u*sind(-i)))... + endfor + cycle; + pat2 = for i=-90 step 2 until 90: + rp(V528+(-2u*cosd(i),0,2u*sind(i)))... + endfor + for i=-90 step 2 until 90: + rp(V529+(2u*cosd(i),0,2u*sind(-i)))... + endfor + cycle; + pat3 = for i=-90 step 2 until 90: + rp(V524+(-8u*cosd(i),0,8u*sind(i)))... + endfor + for i=-90 step 2 until 90: + rp(V525+(8u*cosd(i),0,8u*sind(-i)))... + endfor + cycle; + pat4 = for i=-90 step 2 until 90: + rp(V526+(-8u*cosd(i),0,8u*sind(i)))... + endfor + for i=-90 step 2 until 90: + rp(V527+(8u*cosd(i),0,8u*sind(-i)))... + endfor + cycle; + pair auxp, auxP, auxm, auxM; + auxp = point 0 of spatialhalfcircle(V524,green,8.05u,true); + auxP = point 0 of spatialhalfcircle(V526,green,8.05u,true); + auxm = point 0 of spatialhalfcircle(V525,green,8.05u,false); + auxM = point 0 of spatialhalfcircle(V527,green,8.05u,false); + pat5 = P524--auxp; + pat6 = P525--auxm; + pat7 = pat3 cutbefore pat5 cutafter pat6; + pat8 = auxp--auxP; + pat9 = auxm--auxM; + + unfill pat3; +% draw pat1; + draw pat2; + draw pat7; + draw pat4; + draw pat8; + draw pat9; + fakehole(V524,green*4u, 2u ); + fakehole(V525,green*4u, 2u ); + + + path pat[]; + pat1 = for i=-90 step 2 until 90: + rp(V722+(-2u*cosd(i),0,2u*sind(i)))... + endfor + for i=-90 step 2 until 90: + rp(V723+(2u*cosd(i),0,2u*sind(-i)))... + endfor + cycle; + pat2 = for i=-90 step 2 until 90: + rp(V728+(-2u*cosd(i),0,2u*sind(i)))... + endfor + for i=-90 step 2 until 90: + rp(V729+(2u*cosd(i),0,2u*sind(-i)))... + endfor + cycle; + pat3 = for i=-90 step 2 until 90: + rp(V724+(-8u*cosd(i),0,8u*sind(i)))... + endfor + for i=-90 step 2 until 90: + rp(V725+(8u*cosd(i),0,8u*sind(-i)))... + endfor + cycle; + pat4 = for i=-90 step 2 until 90: + rp(V726+(-8u*cosd(i),0,8u*sind(i)))... + endfor + for i=-90 step 2 until 90: + rp(V727+(8u*cosd(i),0,8u*sind(-i)))... + endfor + cycle; + pair auxp, auxP, auxm, auxM; + auxp = point 0 of spatialhalfcircle(V724,green,8.05u,true); + auxP = point 0 of spatialhalfcircle(V726,green,8.05u,true); + auxm = point 0 of spatialhalfcircle(V725,green,8.05u,false); + auxM = point 0 of spatialhalfcircle(V727,green,8.05u,false); + pat5 = P724--auxp; + pat6 = P725--auxm; + pat7 = pat3 cutbefore pat5 cutafter pat6; + pat8 = auxp--auxP; + pat9 = auxm--auxM; + pat10= pat4 cutbefore P727--auxM cutafter P726--auxP; + unfill pat7--pat9--pat10--(reverse pat8)--cycle; +% draw pat1; + draw pat2; + draw pat7; + draw pat4; + draw pat8; + draw pat9; + fakehole(V724,green*4u, 2u ); + fakehole(V725,green*4u, 2u ); + + path pat[]; + pat1 = P401-- for i=90 step -5 until -85: + rp(V415+(0,8u*sind(i),8u*cosd(i))).. + endfor P419--P407--P406--P403--P402--cycle; + pat10 = P401--P414--P411--P410-- for i=90 step -5 until -85: + rp(V416+(0,8u*sind(i),8u*cosd(i))).. + endfor P418; + pair auxp,auxP; + auxp = point 0 of spatialhalfcircle(V415,red,8.05u,false); + auxP = point 0 of spatialhalfcircle(V416,red,8.05u,false); + pat9 = P416--auxP; + pat2 = pat10 cutafter pat9; + pat3 = auxp--auxP; + unfill pat1; + unfill pat10--P403--cycle; + for i=1 upto 3: + draw pat[i]; + endfor; + fakehole(V415,-red*4u, 2u ); + fakehole(V417,-green*4u, 2u ); + + + path pat[]; + pat1 = P3--P2--P13--P14--P11--P10--P9--P12--P13; + pat2 = P11--P12; + pat3 = P9--P4--P5--P6--P7--P8--P5; + numeric i; + pat8 = P1-- for i=-90 step 5 until 85: + rp(V15+(0,8u*cosd(i),8u*sind(i))).. + endfor P19--P7; + pat5 = P10-- for i=-90 step 5 until 85: + rp(V16+(0,8u*cosd(i),8u*sind(i))).. + endfor P18--P8; + pat6 = pat1 cutbefore pat3; + pair auxp,auxP; + auxp = point 0 of spatialhalfcircle(V15,red,8.05u,true); + auxP = point 0 of spatialhalfcircle(V16,red,8.05u,true); + pat9 = rp(V15)--auxp; + pat4 = pat8 cutbefore pat9; + pat7 = auxp--auxP; + unfill buildcycle( pat1, pat5, pat8, reverse pat3 ); + for i=2 upto 7: + draw pat[i]; + endfor; + fakehole(V15,red*4u, 2u ); + fakehole(V17,blue*4u, 2u ); + refillpat1 = P9--P4--P5--P6--P7--P19--P18--cycle; + retouchpat1 = P9--P4--P5--P6--P7--P19; + retouchpat2 = P18--P8--P5; + retouchpat5 = P8--P7; + + path pat[]; + pat2 = for i=-90+dang step 2 until 90+dang: + rp(V928+(-2u*cosd(i),2u*sind(i),0))... + endfor + for i=-90+dang step 2 until 90+dang: + rp(V929+(2u*cosd(i),2u*sind(-i),0))... + endfor + cycle; + pat3 = for i=-90+dang step 2 until 90+dang: + rp(V924+(-8u*cosd(i),8u*sind(i),0))... + endfor + for i=-90+dang step 2 until 90+dang: + rp(V925+(8u*cosd(i),8u*sind(-i),0))... + endfor + cycle; + pat4 = for i=-90+dang step 2 until 90+dang: + rp(V926+(-8u*cosd(i),8u*sind(i),0))... + endfor + for i=-90+dang step 2 until 90+dang: + rp(V927+(8u*cosd(i),8u*sind(-i),0))... + endfor + cycle; + pair auxp, auxP, auxm, auxM; + auxp = point 0 of spatialhalfcircle(V924,blue,8.05u,false); + auxP = point 0 of spatialhalfcircle(V926,blue,8.05u,false); + auxm = point 0 of spatialhalfcircle(V925,blue,8.05u,true); + auxM = point 0 of spatialhalfcircle(V927,blue,8.05u,true); + pat5 = P924--auxp; + pat6 = P925--auxm; + pat7 = pat3 cutbefore pat5 cutafter pat6; + pat8 = auxp--auxP; + pat9 = auxm--auxM; + pat10= pat4 cutbefore P927--auxM cutafter P926--auxP; + unfill pat7--pat8--pat10--(reverse pat9)--cycle; + + draw pat2; + draw pat7; + draw pat4; + draw pat8; + draw pat9; + fakehole(V924,blue*4u, 2u ); + fakehole(V925,blue*4u, 2u ); + + path pat[]; + pat1 = for i=-90 step 2 until 90: + rp(V622+(-2u*cosd(i),2u*sind(i),0))... + endfor + for i=-90 step 2 until 90: + rp(V623+(2u*cosd(i),2u*sind(-i),0))... + endfor + cycle; + pat2 = for i=-90 step 2 until 90: + rp(V628+(-2u*cosd(i),2u*sind(i),0))... + endfor + for i=-90 step 2 until 90: + rp(V629+(2u*cosd(i),2u*sind(-i),0))... + endfor + cycle; + pat3 = for i=-90 step 2 until 90: + rp(V624+(-8u*cosd(i),8u*sind(i),0))... + endfor + for i=-90 step 2 until 90: + rp(V625+(8u*cosd(i),8u*sind(-i),0))... + endfor + cycle; + pat4 = for i=-90 step 2 until 90: + rp(V626+(-8u*cosd(i),8u*sind(i),0))... + endfor + for i=-90 step 2 until 90: + rp(V627+(8u*cosd(i),8u*sind(-i),0))... + endfor + cycle; + pair auxp, auxP, auxm, auxM; + auxp = point 0 of spatialhalfcircle(V624,blue,8.05u,false); + auxP = point 0 of spatialhalfcircle(V626,blue,8.05u,false); + auxm = point 0 of spatialhalfcircle(V625,blue,8.05u,true); + auxM = point 0 of spatialhalfcircle(V627,blue,8.05u,true); + pat5 = P624--auxp; + pat6 = P625--auxm; + pat7 = pat3 cutbefore pat5 cutafter pat6; + pat8 = auxp--auxP; + pat9 = auxm--auxM; + unfill pat3; + +%% pat10 = buildcycle( pat1, pat2 ); +%% draw pat10; +%% draw pat1 cutbefore pat2; +%% THIS IS BAD, VERY BAD!!!! BUILDCYCLE DOES NOT WORK!!!! +% show length pat1; +% show pat1 intersectiontimes pat2; +% show reverse pat1 intersectiontimes pat2; + numeric auxta, auxtb; + auxta = xpart (reverse pat1 intersectiontimes pat2); + auxtb = xpart (pat1 intersectiontimes pat2); + draw subpath (-auxta,auxtb) of pat1; + + draw pat2; + draw pat7; + draw pat4; + draw pat8; + draw pat9; + fakehole(V624,blue*4u, 2u ); + fakehole(V625,blue*4u, 2u ); + + + path pat[]; + pat1 = for i=-90 step 2 until 90: + rp(V822+(-2u*cosd(i),2u*sind(i),0))... + endfor + for i=-90 step 2 until 90: + rp(V823+(2u*cosd(i),2u*sind(-i),0))... + endfor + cycle; + pat2 = for i=-90 step 2 until 90: + rp(V828+(-2u*cosd(i),2u*sind(i),0))... + endfor + for i=-90 step 2 until 90: + rp(V829+(2u*cosd(i),2u*sind(-i),0))... + endfor + cycle; + pat3 = for i=-90 step 2 until 90: + rp(V824+(-8u*cosd(i),8u*sind(i),0))... + endfor + for i=-90 step 2 until 90: + rp(V825+(8u*cosd(i),8u*sind(-i),0))... + endfor + cycle; + pat4 = for i=-90 step 2 until 90: + rp(V826+(-8u*cosd(i),8u*sind(i),0))... + endfor + for i=-90 step 2 until 90: + rp(V827+(8u*cosd(i),8u*sind(-i),0))... + endfor + cycle; + pair auxp, auxP, auxm, auxM; + auxp = point 0 of spatialhalfcircle(V824,blue,8.05u,false); + auxP = point 0 of spatialhalfcircle(V826,blue,8.05u,false); + auxm = point 0 of spatialhalfcircle(V825,blue,8.05u,true); + auxM = point 0 of spatialhalfcircle(V827,blue,8.05u,true); + pat5 = P824--auxp; + pat6 = P825--auxm; + pat7 = pat3 cutbefore pat5 cutafter pat6; + pat8 = auxp--auxP; + pat9 = auxm--auxM; + pat10= pat4 cutbefore P827--auxM cutafter P826--auxP; + unfill pat7--pat9--pat10--(reverse pat8)--cycle; + + %% pat10 = buildcycle( pat1, pat2 ); + %% draw pat10; + %% draw pat1 cutbefore pat2; + %% THIS IS BAD, VERY BAD!!!! BUILDCYCLE DOES NOT WORK!!!! + % show length pat1; + % show pat1 intersectiontimes pat2; + % show reverse pat1 intersectiontimes pat2; + numeric auxta, auxtb; + auxta = xpart (reverse pat1 intersectiontimes pat2); + auxtb = xpart (pat1 intersectiontimes pat2); + draw subpath (-auxta,auxtb) of pat1; + + draw pat2; + draw pat7; + draw pat4; + draw pat8; + draw pat9; + fakehole(V824,blue*4u, 2u ); + fakehole(V825,blue*4u, 2u ); + + + path pat[]; + pat1 = P209--P212--P213--P214--P211; + pat10 = P211--P210-- for i=90 step -5 until -85: + rp(V216+(0,8u*cosd(i),8u*sind(i))).. + endfor P218--P208--P205; + pat2 = pat10 cutafter pat1; + pat11 = P214--P201-- for i=90 step -5 until -85: + rp(V215+(0,8u*cosd(i),8u*sind(i))).. + endfor P219--P207; + pair auxp,auxP; + auxp = point 0 of spatialhalfcircle(V215,red,8.05u,true); + auxP = point 0 of spatialhalfcircle(V216,red,8.05u,true); + pat9 = P215--auxp; + pat3 = pat11 cutafter pat9; + pat4 = auxp--auxP; + pat6 = P211--P212; + pat5 = P210--P209; + unfill buildcycle(pat1,pat11,pat10); + for i=1 upto 6: + draw pat[i]; + endfor; + fakehole(V215,red*4u, 2u ); + fakehole(V217,-blue*4u, 2u ); + + unfill refillpat1; + draw retouchpat1; + draw retouchpat2; + unfill refillpat2; + draw retouchpat3; + draw retouchpat4; + draw retouchpat5; + + unfill buildcycle(pat1,pat11,pat10); + for i=1 upto 6: + draw pat[i]; + endfor; + fakehole(V215,red*4u, 2u ); + fakehole(V217,-blue*4u, 2u ); + + % label.top( "40", indicl(40) ); + % label.top( "42", indicl(42) ); + % label.top( "43", indicl(43) ); + % label.top( "44", indicl(44) ); + % label.top( "55", indicl(55) ); + % label.top( "56", indicl(56) ); + % label.top( "57", indicl(57) ); + % label.top( "58", indicl(58) ); + + % draw indicp(40); + % draw indicp(42); + % draw indicp(43); + % draw indicp(44); + % draw indicp(55); + % draw indicp(56); + % draw indicp(57); + % draw indicp(58); + + path pat[]; + pat1 = for i=-90-dang step 2 until 90-dang-2: + rp(V1022+(-2u*cosd(i),2u*sind(i),0))... + endfor rp(V1022+(-2u*cosd(90-dang),2u*sind(90-dang),0)); + pat11 = for i=-90-dang step 2 until 90-dang-2: + rp(V1023+(2u*cosd(i),2u*sind(-i),0))... + endfor rp(V1023+(2u*cosd(90-dang),2u*sind(-90+dang),0)); + pat2 = for i=-90-dang step 2 until 90-dang: + rp(V1028+(-2u*cosd(i),2u*sind(i),0))... + endfor + for i=-90-dang step 2 until 90-dang: + rp(V1029+(2u*cosd(i),2u*sind(-i),0))... + endfor + cycle; + pat3 = for i=-90-dang step 2 until 90-dang: + rp(V1024+(-8u*cosd(i),8u*sind(i),0))... + endfor + for i=-90-dang step 2 until 90-dang: + rp(V1025+(8u*cosd(i),8u*sind(-i),0))... + endfor + cycle; + pat4 = for i=-90-dang step 2 until 90-dang: + rp(V1026+(-8u*cosd(i),8u*sind(i),0))... + endfor + for i=-90-dang step 2 until 90-dang: + rp(V1027+(8u*cosd(i),8u*sind(-i),0))... + endfor + cycle; + pair auxp, auxP, auxm, auxM; + auxp = point 0 of spatialhalfcircle(V1024,blue,8.05u,true); + auxP = point 0 of spatialhalfcircle(V1026,blue,8.05u,true); + auxm = point 0 of spatialhalfcircle(V1025,blue,8.05u,false); + auxM = point 0 of spatialhalfcircle(V1027,blue,8.05u,false); + pat5 = P1024--auxp; + pat6 = P1025--auxm; + pat7 = pat3 cutbefore pat6 cutafter pat5; + pat8 = auxp--auxP; + pat9 = auxm--auxM; + pat10= pat4 cutbefore P1027--auxM cutafter P1026--auxP; + unfill pat7--pat8--pat10--(reverse pat9)--cycle; + + draw (point (length pat1) of pat1 -- point 0 of pat11) cutafter pat2; + draw pat1 cutbefore pat2; + draw pat2; + draw pat7; + draw pat4; + draw pat8; + draw pat9; + fakehole(V1024,blue*4u, 2u ); + fakehole(V1025,blue*4u, 2u ); + + + + +endfig; + +end. + + + + + + + + + + + + + + + |