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
|
% --- start of displayed preamble in the book ---
% --- end of displayed preamble in the book ---
def EllipseLabelsAndPoints=
pickup pencircle scaled 3pt;
for i=O,A,B,C,D,E,F,G,K,
M1,M2,N1,N2,P1,P2,P3,P4:
draw i;
endfor;
pickup pencircle scaled .5;
label.llft(btex $D$ etex,D);
label.urt(btex $C$ etex,C);
label.bot(btex $A$ etex,A);
label.top(btex $B$ etex,B);
label.lrt(btex $M_1$ etex,M1);
label.ulft(btex $M_2$ etex,M2);
label.llft(btex $N_1$ etex,N1+1mm*up);
label.rt(btex $N_2$ etex,N2+1mm*up);
label.bot(btex $F$ etex,F+1mm*left);
label.ulft(btex $E$ etex,E);
label.rt(btex $K$ etex,K);
label.llft(btex $G$ etex,G);
label.llft(btex $P_1$ etex,P1);
label.ulft(btex $P_2$ etex,P2);
label.urt(btex $P_3$ etex,P3);
label.lrt(btex $P_4$ etex,P4);
enddef;
defaultfont:="ptmr8r";
warningcheck:=0;
beginfig(1)
pair O,A,B,C,D,E,F,G,K,M[],N[],P[];path parallelogram,X;
O=origin;B-O=O-A=3cm*dir(120);D-O=O-C=4cm*dir(180);
P1=A+D-O;P2=B+D-O;P3=B+C-O;P4=A+C-O;
draw A--B dashed evenly withcolor blue;
draw C--D dashed evenly withcolor blue;
parallelogram=P1--P2--P3--P4--cycle;
draw parallelogram;
E-D=arclength(O--B)*(unitvector(B-A) rotated -90);
draw D--E;draw O--E;F=.5[O,E];
X=fullcircle scaled arclength(O--E) shifted F;
draw X;
G=(F--D) intersectionpoint X;K=(F--(F+(F-D))) intersectionpoint X;
draw D--K;
N1-O=O-N2=arclength(D--G)*unitvector(O-K);
M1-O=O-M2=arclength(D--K)*unitvector(O-G);
draw N1--N2 dashed evenly;draw M1--M2 dashed evenly;
a:=arclength(M1--O);b:=arclength(N1--O);an:=angle(M1-O);
draw fullcircle xscaled 2a yscaled 2b rotated an shifted O withcolor red;
draw E--(E+(E-D)) dashed evenly;
EllipseLabelsAndPoints; % not shown
endfig;
end;
|