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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
|
% ASTROSYM.CAL : AstroSym (Version 2.20, Aug. 10, 2002) - file 5 of 8
% Peter Schmitt eMail: Peter.Schmitt@univie.ac.at
% Institute of Mathematics, University of Vienna Vienna, Austria
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
beginchar(O+0,U#,U#,0u#); "Sol";
D:=2P; % diameter of central circle
corners; centers;
PEN; draw BC..CL..TC..CR..BC..cycle; % main circle
Pen; draw fullcircle scaled D shifted CC; % central circle
endchar;
beginchar(O+1,46u#,80u#,16u#); "Mercurius";
corners; centers;
VV:=(CC-CL) rotated 90;
bC := CC-VV;
VV:=2VV+vP/3;
tL:=CL+VV; tC:=CC+VV; tR:=CR+VV;
R:=length(tL-hd-tC); % upper circle: outer radius
s:=length(TC+vd-tC); a:= angle(R+-+s,s); % upper partial sector: angle
Tl:= (tL-hd) rotatedaround (tC,-a); % upper circle: outer endpoints
Tr:= (tR+hd) rotatedaround (tC, a);
tl:= (tL+hd) rotatedaround (tC,-a+10); % upper circle: inner endpoints
tr:= (tR-hd) rotatedaround (tC, a-10);
D:=length(CR-CL); % central circle: diameter
SPEN; cross (bC,BC, 3/2,-2P); % bottom cross
PEN;
draw fullcircle scaled D shifted CC; % central circle
Pen; Fill
( Tl..(tL-hd){down}..{up}(tR+hd)..Tr % upper circle: outside
& Tr--tr
& tr..(tR-hd){down}..{up}(tL+hd)..tl % upper circle: inside
& tl--Tl--cycle
);
endchar;
beginchar(O+5,44u#,70u#,0u#); "Iuppiter";
Corners (P,0,0,P); Centers (2/3,2/7); Top (6/7);
RPEN; draw tC--BC; % right vertical bar
RPEN rotated 90; draw (CL+hd)--CR; % horizontal bar
Pen; Fill % left vertical arc
( (CL-vd-hd){tC-CL}..{TL-CC}(TL+(1-sqrt2)*vP-hd) % - left
& (TL+(1-sqrt2)*vP-hd)--(TL+vd-(1-sqrt2)*hP) % - top
& (TL+vd-(1-sqrt2)*hP){CC-TL}..{CL-tC}(CL-vd+hd) % - right
& (CL-vd+hd)--(CL-vd-hd) % - bottom
& (CL-vd-hd)..cycle
);
endchar;
beginchar(O+6,44u#,72u#,12u#); "Saturnus";
Corners (P,P,d+P,P);
Centers (1/6,5/9); % BC and TC : left vertical bar
RT (1/2,1); % bR : right arc (right)
HOR (0,1/3); Top (6/7); % tl and tr : upper horizontal bar
BOT (2/3,7/9); Bl:=Bl-vd; % Bl
Br:=Br-(0,d)+((P-(P*sqrt(2))*sind(45+20),0) rotated -70); % Br
SPEN; draw tl--tr; draw BC--TC; % left cross
PEN; draw CC{dir 20}..{down}bR..{dir250}Bl..{dir-70}Br; % right arc
RPEN rotated 20; draw Br--(Br+(hP rotated -70)); % sharpen arc end
endchar;
beginchar(O+11,1U#,72u#,2u#); "Aries";
Corners(p,p,p+d,p);
BOT (1/2,1/2);
% upper boundary :
vv:=7vd; % estimated correction
bl:=Bl+vv; br:=Br+vv; % bl = br : lower middle point
TOP (1/6,5/6); % (temporary) Tl and Tr : upper arcs (tops)
HH:= Tl-TL; VV:= HH rotated -90;
tr:=Tr+VV; % tr : right upper halfcircle (centre)
D:=length(tr-br); R:=length(HH); s:=D+-+R; % calculating direction of bar
b:=angle(s,R); b:=b+angle(tr-br);
Tr:=tr+(HH rotated (b+90)); % Tr : (left endpoint)
tR:=tr+(HH rotated (b-90)); % tR : (right endpoint)
tl:=Tl+VV; a:=180-b; % tl : left upper halfcircle (centre)
Tl:=tl+(HH rotated (a-90)); % Tl : (right endpoint)
tL:=tl+(HH rotated (a+90)); % tL : (left endpoint)
% lower boundary :
s:=2(P-p)/sind(90-b); % caculating |Bl-bl|
Bl:= bl-(0,s); Br:=br-(0,s);
t:=2(P-p)/length(HH);
tl:=Tl-t*(HH rotated (a-90)); % left upper halfcircle: right endpoint
tr:=Tr-t*(HH rotated (b+90)); % right upper halfcircle: left endpoint
Pen; Fill
( bl--Tl{dir a}..{dir (a-180)}tL % left part: upper boundary
& tL..(tL+(1,0)) % avoiding strange path
{dir (a-6)}..{dir (a-180)}tl--Bl % left part: lower boundary
& Bl--bl..cycle
);
Fill
( br--Tr{dir b}..{dir (b-180)}tR % right part: upper boundary
& tR..(tR-(1,0)) % avoiding strange path
{dir (b+6)}..{dir (b-180)}tr--Br % right part: lower boundary
& Br--br..cycle
);
endchar;
beginchar(O+12,1U#,72u#,8u#); "Taurus";
Corners(P,P,P,p);
Centers (1/2,5/9); % BC and CC : lower circle (top and bottom)
HOR (1/8,7/8); % Tl and Tr : upper arcs (tops)
Bot (5/18); % bl and br : lower circle (left and right)
LFT (0,4/5); RT (0,4/5); % tL and tR : upper arcs (left and right)
Pen; Fill
( Tl{dir 223}..{down}(tL-hd)..(CC-vd) % left upper arc: outside
..(br-hd)..(BC+vd)..(bl+hd)..(CC-vd) % lower circle: inside
..{up}(tR+hd)..{dir 137}Tr % right upper arc: outside
& Tr{dir -47}..{down}(tR-hd/2+vd/2)..(CC+vd) % right upper arc: inside
..(bl-hd)..(BC-vd)..(br+hd)..(CC+vd) % lower circle: outside
..{up}(tL+hd/2+vd/2)..{dir 47}Tl % left upper arc: inside
& Tl..Tl..cycle
);
endchar;
beginchar(O+13,56u#,72u#,8u#); "Gemini";
Corners (p,p,p,p);
HOR (2/7,5/7);
Top (7/8); Bot (1/8);
Pen; Fill ( BL..(bl-vd)..(br-vd)..BR % bottom arc: lower boundary
& BR..(br+vd)..(bl+vd)..BL % bottom arc: upper boundary
& BL--cycle
);
Fill ( TL..(tl-vd)..(tr-vd)..TR % top arc: lower boundary
& TR..(tr+vd)..(tl+vd)..TL % top arc: upper boundary
& TL--cycle
);
RPEN; draw tl--bl; draw tr--br; % left and right vertical bar
endchar;
beginchar(O+14,80u#,68u#,0u#); "Cancer";
corners; centers;
Cl:=2/7[CL,CR]; RT (0,4/5);
PEN; draw CL{up}..{down}Cl..{up}CL; % left circle
Pen; Fill ( (CL-hd){up}..{right}(TC+vd)..tR % upper arc: upper boundary
& tR..{left}(TC-vd/2)..{down}(CL+hd) % upper arc: lower boundary
& (CL+hd)--(CL-hd)..cycle
);
picture upper; upper := currentpicture; % adding rotated copy
addto currentpicture also upper rotated 180 shifted 2CC;
endchar;
beginchar(O+15,68u#,80u#,10u#); "Leo";
Corners(P,p,d+P,P); centers; % TC
HOR (1/6,17/20); Top (3/4); % tl and tr : main arc (left and right)
BOT (1/3,2/3); rr:=(Bl-BL)/2;
bL:=BL+(rr rotated 90); bl:=bL+2rr; % bL and bl : lower left circle
Br:=BR+hd-(2d,0)-vP; BR:=BR-vP; % Br and BR : lower right arc
PEN; draw bL{down}..{up}bl % lower left circle: lower arc
..{up}tl..{right}TC..{down}tr..{down}Br; % main arc
Pen; Fill % lower right arc
( (Br-hd){down}..{up}BR % outside
& BR{dir265}..{up}(Br+hd) % inside
& (Br+hd)--(Br-hd)..cycle
);
Fill ( (bL+hd){up}..bl % lower left circle: upper arc, ouside
& bl{up}..{down}(bL-hd) % inside
& (bL-hd)--(bL+hd)..cycle
);
endchar;
beginchar(O+16,100u#,68u#,10u#); "Virgo";
Corners (P,P,d,0);
LFT (0,3/4); % tL : left upper arc (left end)
HOR (1/3,2/3); Top (3/4); % tl and tr : upper arcs (endpoints)
TOP (4/14,4/14+1/3); % Tl and Tr : upper arcs (tops)
RT (1/5,3/4); % tR : right upper arc (right end)
% bR and tR : right vertical bar (ends)
TR:=(4/14+2/3)[TL,TR]; % TR : right upper arc (top)
bC:=.5[Bl,Br]-(0,d/2); % bC : lower right stroke (endpoint)
br:=Br-(0,d); % br : middle right bar (lower end)
Br:=Br+vP; % Br : lower right vertical stroke (left)
BR:=2/3[Br,BR+vP]; % BR : lower right vertical stroke (right)
RPEN; draw TL--BL; draw tl--Bl; draw tr--br; draw tR--bR; % vertical bars
Pen; Fill % left upper arc
( tL{dir 42}..{right}(Tl-4vp)..{down}(tl+hd) % upper boundary
& (tl+hd)--(tl-hd)
& (tl-hd){up}..(Tl-2vP-2vp)..{dir 215}tL..cycle % lower boundary
);
Fill % middle upper arc
( tl{dir 42}..{right}(Tr-4vp)..{down}(tr+hd) % upper boundary
& (tr+hd)--(tr-hd)
& (tr-hd){up}..(Tr-2vP-2vp)..{dir 215}tl..cycle % lower boundary
);
Fill % right upper arc
( tr{dir 45}..{right}(TR-1vp)..{down}(tR+hd) % upper boundary
& (tR+hd)--(tR-hd)
& (tR-hd){up}..(TR-2vd-0vp)..{dir 215}tr..cycle % lower boundary
);
PEN; draw bR{dir250}..{dir190}BR--Br; % lower right stroke: right part
Pen; Fill
( (Br+vd){left}..{dir 235}bC % lower right stroke: left part
& bC{dir 50}..{right}(Br-vd)
& (Br-vd)--(Br+vd)..cycle
);
endchar;
beginchar(O+17,64u#,56u#,-8u#); "Libra";
corners;
Centers (1/2,7/15); % CL and CR : upper bars (outer ends)
TOP (1/4,3/4);
VV:=(TC-Tl) rotated -90;
tl:=Tl+VV; tr:=Tr+VV; % tl and tr : upper arc (left and right)
R:=length(VV); D:=length(TC-CC); % calculating intersection of
t:=(R+-+(D-R))/length(BR-BL); % upper arc with upper bars
HOR (1/2-t,1/2+t); Bot (7/15); % (bl and cl renamed:)
Cl:=bl; Cr:=br; % Cl and Cr : upper arc (inner ends)
% Cl:=bl+hP; Cr:=br-hP; % Cl and Cr : upper arc (inner ends)
bL:=CL-vP; bl:=Cl-vP; br:=Cr-vP; bR:=CR-vP; % shift upper bars slightly down
% bL:=CL; bl:=Cl; br:=Cr; bR:=CR; % shift upper bars slightly down
SPEN; draw BL--BR; % bottom bar
SPEN; draw bL--bl; draw br--bR; % left and right upper bars
Pen; Fill % left upper bar: left end
( CL{dir 170}..{dir 105}(CL+vd-hd) % inner boundary
& (CL+vd-hd)--(CL-hd)--CL % left and lower boundary
& CL.. cycle
);
Pen; Fill % right upper bar: right end
( CR{dir 10}..{dir 75}(CR+vd+hd) % inner boundary
& (CR+vd+hd)--(CR+hd)--CR % right and lower boundary
& CR.. cycle
);
PEN; draw Cl..{up}tl..{right}TC..{down}tr..Cr; % upper arc
endchar;
beginchar(O+18,(14/15)*100u#-(13/15)*P#+p#,68u#,10u#); "Scorpio";
Corners (P,p,d,0);
LFT (0,3/4); % tL : left upper arc (left end)
HOR (5/14,10/14); Top (3/4); % tl and tr : upper arcs (endpoints)
TOP (4/14,9/14); % Tl and Tr : upper arcs (tops)
RT (1/6,1); % bR : lower right arrow (point)
br:=1/3[Br,BR]-(0,d)+vp; % br : lower right arc (bottom)
BR:=2/3[Br,BR]+vp; % Br and BR : lower right arc (endpoints)
RPEN; draw TL--BL; draw tl--Bl; draw tr--Br; % vertical bars
Pen; Fill % left upper arc
( tL{dir 42}..{right}(Tl-4vp)..{down}(tl+hd) % upper boundary
& (tl+hd)--(tl-hd)
& (tl-hd){up}..(Tl-2vP-2vp)..{dir 215}tL..cycle % lower boundary
);
Fill % right upper arc
( tl{dir 42}..{right}(Tr-4vp)..{down}(tr+hd) % upper boundary
& (tr+hd)--(tr-hd)
& (tr-hd){up}..(Tr-2vP-2vp)..{dir 215}tl..cycle % lower boundary
);
Fill % lower right arc
( (Br+hd){down}..{right}(br+vd)..{dir angle((br-BR) rotated 0)}BR
& BR{dir angle((BR-br) rotated 6)}..{left}br..{up}(Br-hd)
& (Br-hd)--(Br+hd)..cycle
);
arrow (BR+2hp,bR, 1, 1/4,1/2); % lower right arrow
endchar;
beginchar(O+19,56u#,80u#,8u#); "Sagittarius";
Corners(P*(h+d)/((h+d)++w),p,P*w/((h+d)++w),p);
bl:=(1/5)[BL,TR]; tr:=(3/4)[BL,TR];
VV:=TR-BL; a:=angle(VV);
HH:= VV/8 rotated 90;
bL:= bl+HH; Bl:= bl-HH;
RPEN rotated (a+90); draw BL--tr; % shaft
RPEN rotated a; draw bL--Bl; % short bar
Pen; arrow (tr,TR, 6/7, .3,.6); % point
endchar;
beginchar(O+20,56u#,1U#,0); "Capricornus";
Corners(p,p,p,p); % TR: top bar (right end)
Centers (2/3,2/3); % BC and CC: loop (bottom and top)
HOR (1/3,1); Bot (1/3); % bl and br: loop (left and right)
TOP(1/4,1); Tl:=Tl-hd; % Tl: top bar (left end)
LFT (.45,1); % bL: end of loop
Pen; Fill
( Tl--TR % top bar: upper boundary
& TR{dir225}..{down}(bl+hd)..{right}(BC+2vd) % loop from TR to bL
..{up}(br-2hd)..{left}(CC-.5vd-hd)..bL
& bL..{right}(CC+.5vd)..{down}br..{left}BC % loop back from bL to TR
..{up}(bl-hd)..{dir45}(TR-2vd-3hd)
& (TR-2vd-3hd)--(Tl-2vd)--Tl % top bar: lower boundary
& Tl..Tl..cycle
);
endchar;
beginchar(O+22,56u#,72u#,8u#); "Pisces";
Corners(p,p,p,p);
HOR (1/4,3/4); Top (1/2);
Pen; Fill ( BL..(tl-hd)..TL % left arc: left boundary
& TL..(tl+hd)..BL % left arc: right boundary
& BL--cycle
);
Fill ( BR..(tr-hd)..TR % right arc: left boundary
& TR..(tr+hd)..BR % right arc: right boundary
& BR--cycle
);
PEN; draw tl--tr; % vertical bar
endchar;
beginchar(O+23,44u#,72u#,12u#); "Saturnus 2";
corners; Centers (4/9,8/11);
HOR (0,8/9); Top (19/22);
RT (6.3/11,1); % bR
Bl:=2/9[BL,BR]; Bot(.8/12); % bl
bC:=1/5[BC,TC]; % bC
Bl:=Bl+((P-(P*sqrt(2))*sind(45+20),0) rotated -70); % Bl
SPEN; draw tl--tr; draw CC--TC; % upper cross
PEN; draw CC{right}..{down}bR..bC..{dir250}bl..{dir-70}Bl; % lower arc
RPEN rotated 20; draw Bl--(Bl+(hP rotated -70)); % sharpen arc end
endchar;
beginchar(O+27,76u#,50u#,-22u#); "Aquarius 2";
Corners (p,p,p,p);
% upper strokes:
Centers (3/5,1/2); % CL and CC : left stroke (left end, right bottom)
TOP (1/4,4/5); % Tl and Tr : left stroke (left top, right end)
Pen;
Fill ( (CL+vp)..{right}Tl..{right}(CC+vd)..(Tr-vP) % left stroke: upper
& (Tr-vP)..{left}(CC+vp)..{left}(Tl-2vd)..(CL+vp) % left stroke: lower
& (CL+vp)..cycle
);
Fill ( (Tr+hP/2)..{right}(CR+2vd) % right stroke: upper
& (CR+2vd){-hP/2-2vd}..{left}(CR-hP+vp) % right stroke: lower
..(Tr-2vd-hP/2) % ( from Tr to CR )
& (Tr-2vd-hP/2)--(Tr+hP/2) % right stroke: left end
& (Tr+hP/2)..cycle
);
picture upper; upper:= currentpicture; % lower strokes
addto currentpicture also upper shifted (0,-(h+d)/2);
endchar;
beginchar(O+28,78u#,56u#,-9u#); "Aquarius 3";
Corners(p,p,(h+d)/2+P,P);
% upper stroke : points on central line:
centers; % CL and CR : ends
HOR (1/5,3/5); Bot(1/2); % bl and br : down crossing
HOR (2/5,4/5); Top(1/2); % tl and tr : up crossing
PEN;
draw bl{down}..tl{up}..br{down}..tr{up}; % middle part
Pen; Fill
( CL{up}..{down}(bl+hd) % left end : upper boundary
& (bl+hd)--(bl-hd)
& (bl-hd){up}..{dir 225}CL % lower boundary
& CL..cycle
);
Fill ( CR{up}..{down}(tr-hd) % right end : upper boundary
& (tr-hd)--(tr+hd)
& (tr+hd){up}..{dir -45}CR % lower boundary
& CR..cycle
);
picture upper; upper:= currentpicture; % lower stroke
addto currentpicture also upper shifted (0,-(h+d)/2);
endchar;
beginchar(O+29,U#,U#,0u#); "Terra 2"; % for smaller circle : 52u#,U#,0#
corners; centers;
VV:=(BC-BL) rotated 90;
TC:=CC+VV; BC:=CC-VV;
PEN; draw TC..CR..BC..CL..TC..cycle; % circle
draw BC--TC; draw CL--CR; % cross in circle
s:=1+1/2;
CL:=CL+s*hP; CR:=CR-s*hP;
BC:=BC+s*vP; TC:=TC-s*vP;
PEN scaled 1/2; undraw TC..CR..BC..CL..TC..cycle;
endchar;
beginchar(O+32,88u#,56u#,0); "Libra 3"; % larger variant
corners;
Centers (1/2,7/15); % CL and CR : upper bars (outer ends)
TOP (1/4,3/4);
VV:=(TC-Tl) rotated -90;
tl:=Tl+VV; tr:=Tr+VV; % tl and tr : upper arc (left and right)
R:=length(VV); D:=length(TC-CC); % calculating intersection of
t:=(R+-+(D-R))/length(BR-BL); % upper arc with upper bars
HOR (1/2-t,1/2+t); Bot (7/15); % (bl and cl renamed:)
Cl:=bl; Cr:=br; % Cl and Cr : upper arc (inner ends)
bL:=CL-vP; bl:=Cl-vP; br:=Cr-vP; bR:=CR-vP; % shift upper bars slightly down
%% CL:=CL+8u;CR:=CR+8u; % left and right points
CL:=1/3[bL,TL];CR:=1/3[bR,TR]; % left and right points
SPEN; draw BL--BR; % bottom bar
SPEN; draw bL--bl; draw br--bR; % left and right upper bars
Pen; Fill % left upper bar: left end
( bl{dir 175}..{dir 100}(CL+vd-hd) % inner boundary
& (CL+vd-hd)--(bL-hd)--bl % left and lower boundary
& bl.. cycle
);
Pen; Fill % right upper bar: right end
( br{dir 5}..{dir 80}(CR+vd+hd) % inner boundary
& (CR+vd+hd)--(bR+hd)--br % right and lower boundary
& br.. cycle
);
PEN; draw Cl..{up}tl..{right}TC..{down}tr..Cr; % upper arc
endchar;
beginchar(O+42,10/11U#,U#,0u#); "(moon) last quarter - inverse";
Corners(p,p,p,p); Centers(4/11,1/2);
b:=1; % reduction of stroke breadth
% outer circumference: big circle
VV:=(TL-BL)/2; HH:=VV rotated -90;
BC:=BL+HH; TC:=TL+HH; % CL=BL+VV;
MM:=CL+HH;
% outer circumference: calculating small circle
R:=length(HH); D:=length(BR-BL);
s:=(R+-+(D-R)); t:=s/2R;
CC:=CC+hP;
D:=length(CR-CC);
r := D/2 + s*s/2D;
RT (1/2-t,1/2+t);
mm:=CC+(r,0);
% inner circumference:
D:=length(mm-MM); R:=R-2(b*P-p); r:=r+2b*(P-p);
a:=(R*R-r*r+D*D)/2D;
tr:=MM+(a,R+-+a);
br:=MM+(a,-(R+-+a));
Fill ( tR..CL..bR
& bR..CC..tR
& tR..cycle
);
% unfill tr..(CL+2b*hd)..br % for standard variant \char10
% & br..(CC-2b*hd)..tr
% & tr..cycle;
endchar;
temp := currentpicture;
beginchar(O+43,10/11U#,U#,0u#); "(moon) first quarter - inverse";
currentpicture := temp xscaled -1 shifted (w,0);
endchar;
beginchar(O+10,10/11U#,U#,0u#); "Luna = (moon) last quarter";
currentpicture := temp;
unfill tr..(CL+2b*hd)..br
& br..(CC-2b*hd)..tr
& tr..cycle;
endchar;
temp := currentpicture;
beginchar(O+41,10/11U#,U#,0u#); "(moon) first quarter";
currentpicture := temp xscaled -1 shifted (w,0);
endchar;
beginchar(O+52,1.4U#,1.05U#,.35U#); "Pallas";
Corners (p,p,P,p); Centers (.5,.4);
numeric aa[]; pair Cl,Cr,tC;
RR:= 2(vP-vp);
Cl = aa1[CL,TC] + ( RR rotated -120 ) = aa2[CL,CR] + RR;
Cr = aa3[CR,TC] + ( RR rotated 120 ) = aa4[CL,CR] + RR;
tC = aa5[CR,TC] + ( RR rotated 120 ) = aa6[CL,TC] + ( RR rotated -120 );
Pen; Fill (
TC--CL--CR--TC & TC--tC % top triangle : outside
& tC--Cr--Cl--tC & tC--TC & cycle % top triangle : inside
) ;
SPEN; cross (CC,BC, 1,-P); % bottom cross
endchar;
a:=(sqrt3)/2; % ratio (equilateral triangle)
% used chars ( 58 60 ) 61 ( 63 )
beginchar(O+61,(U#+2P#)/a+2P#,U#+2a*P#,2P#); "Trigon";
Corners (p,p,p,p); centers;
numeric aa[]; pair Bl,Br,tC;
RR:= 2(vP-vp);
Bl = aa1[BL,TC] + ( RR rotated -120 ) = aa2[BL,BR] + RR;
Br = aa3[BR,TC] + ( RR rotated 120 ) = aa4[BL,BR] + RR;
tC = aa5[BR,TC] + ( RR rotated 120 ) = aa6[BL,TC] + ( RR rotated -120 );
Pen; Fill (
TC--BL--BR--TC & TC--tC % triangle : outside
& tC--Br--Bl--tC & tC--TC & cycle % triangle : inside
) ;
endchar;
beginchar(O+64,68u#,80u#,0); "ascending node of moon";
Corners(P,P,P,P); centers; % TC
HOR (1/6,5/6); Top (3/4); % tl and tr : main arc (left and right)
BOT (1/3,2/3); rr:=(Bl-BL)/2;
bL:=BL+(rr rotated 90); bl:=bL+2rr; % bL and bl : lower left circle
bR:=BR+(rr rotated 90); br:=bR-2rr; % bR and br : lower right circle
PEN; draw bL{down}..{up}bl % lower left half circle
..{up}tl..{right}TC..{down}tr % main arc
..{down}br..{up}bR; % lower right half circle
Pen;
Fill ( (bL+hd){up}..bl-(1,0)--bl % lower left circle: upper arc, outside
& bl{up}..{down}(bL-hd) % inside
& (bL-hd)--(bL+hd)..cycle
);
Fill ( (bR-hd){up}..br+(1,0)--br % lower right circle: upper arc, outside
& br{up}..{down}(bR+hd) % inside
& (bR+hd)--(bR-hd)..cycle
);
endchar;
temp := currentpicture;
beginchar(O+65,68u#,80u#,0); "descending node of moon";
currentpicture := ( temp yscaled -1 ) shifted ( 0,h );
endchar;
endinput;
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% end of ASTROSYM.CAL %%%
|