1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
% crossingline.mp
% L. Nobre G.
% 2007
input featpost3Dplus2D;
prologues := 1;
beginfig(3);
path foi, mar, foimar;
foi=
(-2.09207,0)..controls (-0.8113,1.52635) and (0.46948,3.05269)
..(1.75026,4.57904)..controls (16.50494,-7.80182) and (31.25961,-20.18265)
..(46.01431,-32.5635)..controls (47.72202,-30.52838) and (49.42972,-28.49324)
..(51.13742,-26.45813)..controls (36.38272,-14.07727) and (21.62805,-1.69644)
..(6.87337,10.68442)..controls (8.36761,12.46516) and (9.86185,14.2459)
..(11.3561,16.02664)..controls (1.80319,20.141) and (1.80319,20.141)
..(-0.75836,17.0883)..controls (-1.26715,17.51523) and (-1.77594,17.94215)
..(-2.28471,18.36908)..controls (-3.99242,16.33397) and (-5.70012,14.29883)
..(-7.40782,12.2637)..controls (-6.89905,11.83678) and (-6.39026,11.40985)
..(-5.88147,10.98293)..controls (-7.16225,9.45657) and (-8.44302,7.93024)
..(-9.7238,6.40388)..controls (-7.17989,4.26926) and (-4.63599,2.13463)
..cycle;
mar =
(0,-12.55302)..controls (-0.6404,-11.78986) and (-1.28078,-11.02667)
..(-1.92117,-10.2635)..controls (-7.51778,-14.95969) and (-13.11438,-19.65587)
..(-18.71098,-24.35205)..controls (-17.00328,-26.38718) and (-15.29556,-28.42232)
..(-13.58786,-30.45744)..controls (-12.30708,-31.98378) and (-12.30708,-31.98378)
..(-2.1138,-28.6326)..controls (-3.95111,-27.57187) and (-6.11067,-26.96915)
..(-7.48247,-25.33434)..controls (-3.921,-22.34586) and (-0.35953,-19.35738)
..(3.20195,-16.3689)..controls (28.64638,-44.3316) and (76.49767,8.8977)
..(12.84161,37.23851)..controls (64.17233,7.60352) and (23.4439,-32.40083)
..(3.05269,-9.99147)..controls (2.03513,-10.84532) and (1.01756,-11.69917)
..cycle;
foimar = crossingline( mar, foi, 0.001 );
draw foimar;
show foimar;
endfig;
beginfig(2);
numeric u, elhei, elwid, elpos, bawid, bahei, thstp, thdel, i;
numeric refang, reft, tfin, tini, spikang;
path el, ba, aux, cutel, horns;
pair reftpair;
color yellow, thered;
pen penpoint, pendot;
path togetp;
yellow = 0.87*(0.95*red+0.7*green);
thered = 0.66red;
u = 2mm;
thdel = 25;
thstp = 5;
elhei = 30u;
elwid = 44u;
elpos = 26u;
bawid = 27u;
bahei = 10u;
penpoint = pencircle scaled 0.5u;
pendot = pencircle scaled u;
el = (elwid,elpos)..for i=thstp step thstp until 360-thstp:
(elwid*cosd(i),elpos+elhei*sind(i)).. endfor cycle;
ba = (bawid,-bahei){right}..{left}(bawid,0)--
(elwid*cosd(90-thdel),elpos+elhei*sind(90-thdel))--
(bawid/3.0,0)--(0,elpos+elhei)--(-bawid/3.0,0)--
(elwid*cosd(90+thdel),elpos+elhei*sind(90+thdel))--
(-bawid,0){left}..{right}(-bawid,-bahei)--cycle;
aux = (0,elpos)--
1.1[(0,elpos),(elwid*cosd(270+2thdel),elpos+elhei*sind(270+2thdel))];
reftpair = el intersectiontimes aux;
reft = xpart reftpair;
refang = angle( direction reft of el );
tfin = directiontime dir(180-refang) of el;
tini = directiontime dir(180+refang) of el - length el;
cutel = subpath (tini,tfin) of el;
spikang = (90-angle((0,elpos+elhei)-(-bawid,0)));
horns = cutel{dir(-refang-spikang)}..
{left}(0,elpos-elhei+bawid/3.0)..
{dir(refang+spikang)}cycle;
draw ba;
draw horns;
drawarrow subpath (0,1) of ba withpen pendot withcolor red;
drawarrow subpath (0,1) of horns withpen pendot withcolor red;
togetp = crossingline( ba, horns, 0.001 );
draw togetp withpen penpoint;
show togetp;
endfig;
beginfig(1);
numeric u, oray, odev, nl, circrot, i;
pair vect;
u = 1cm;
oray = 1.1u;
odev = 0.4*oray;
nl = 5;
vect = (oray,0);
circrot = -90;
% circrot = -180/nl;
path outerp, innerp, togetp;
innerp = fullcircle scaled 2u rotated circrot shifted vect;
outerp = for i=0 upto nl-1:
(oray-odev)*dir(i*360/nl){dir(i*360/nl+90)}...
(oray+odev)*dir((i+0.5)*360/nl){dir((i+0.5)*360/nl+90)}...
endfor cycle;
togetp = crossingline( outerp, innerp, 0.001 );
fill togetp;
draw outerp withcolor red withpen pencircle scaled 1.2pt;
drawarrow subpath (0,1) of outerp
withcolor green withpen pencircle scaled 0.7pt;
draw innerp withcolor blue;
draw point 0 of innerp withcolor green withpen pencircle scaled 1pt;
endfig;
end.
|