summaryrefslogtreecommitdiff
path: root/fonts/astro/astrosym.cal
blob: bf259b7ed096b81314b3de8d7680385913c37496 (plain)
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 %%%