u = 1cm; beginfig(1); z0 = (6u, 6u); % z0 is L z1 = z0 - (4u,0); % z1 is D z2 - z0 = z0 - z1; % z2 is C z3 - z0 = (z2 - z0) rotated 90; % z3 is E z0 - z4 = z3 - z0; % z4 is F z5 = (1/2) [z0, z3]; % z5 is I z5 - z6 = ( 1+-+(1/2) ) * (z0 - z1); % z6 is A z7 - z5 = z5 - z6; % z7 is B z8 = whatever [z4, z1] = whatever [z6, z7]; % z8 is O'' z9 = whatever [z4, z2] = whatever [z6, z7]; % z9 is O' z10 = (4/5) [z0, z4]; % z10 is M z11 = (5/4) [z0, z4]; % z11 is N z12 = z10 + (z7 - z10) rotated -60; % z12 is P z50 = (z12 - z1) rotated 90 shifted z2; z51 = (z2 - z6) rotated ( angle (z1 - z12) - angle (z6 - z12) ) shifted z6; z13 = whatever [z2, z50] = whatever [z6, z51]; % z13 is Q z14 = (z7 - z10) rotated ( (90 - angle (z7 - z10))) shifted z10; % z14 is G z15 = (z7 - z11) rotated ( (90 - angle (z7 - z11))) shifted z11; % z15 is H z16 = whatever [z12, z14] = whatever [z6, z7]; % z16 is P' z17 = whatever [z13, z15] = whatever [z6, z7]; % z17 is Q' z18 = whatever [z4, z16] = whatever [z2, z17]; % z18 is Z' z19 = whatever [z1, z12] = whatever [z2, z13]; z21 = z0 + (-u, 0.2u); % arrow foot z22 = z0 + (-0.2u, u); % arrow head z23 = z19 + (1.2u, 0.8u); % arrow foot z24 = z19 + (0.4u, 0); % arrow head z101 = (z7 - z10) rotated ((5/3) * (90 - angle (z7 - z10))) shifted z10; z102 = (z7 - z10) rotated ((4/3) * (90 - angle (z7 - z10))) shifted z10; z103 = (z7 - z10) rotated (90 - angle (z7 - z10)) shifted z10; z104 = (z7 - z10) rotated ((2/3) * (90 - angle (z7 - z10))) shifted z10; z105 = (z7 - z10) rotated ((1/3) * (90 - angle (z7 - z10))) shifted z10; z111 = (z7 - z10) rotated -18 shifted z10; z112 = (z7 - z10) rotated -20 shifted z10; z113 = (z7 - z10) rotated -25 shifted z10; z114 = (z7 - z10) rotated -30 shifted z10; z115 = (z7 - z10) rotated -35 shifted z10; z116 = (z7 - z10) rotated -40 shifted z10; z117 = (z7 - z10) rotated -45 shifted z10; z118 = (z7 - z10) rotated -50 shifted z10; z119 = (z7 - z10) rotated -55 shifted z10; z120 = (z7 - z10) rotated -60 shifted z10; z121 = (z7 - z10) rotated -65 shifted z10; z122 = (z7 - z10) rotated -70 shifted z10; z141 = (z7 - z11) rotated ((5/3) * (90 - angle (z7 - z11))) shifted z11; z142 = (z7 - z11) rotated ((4/3) * (90 - angle (z7 - z11))) shifted z11; z143 = (z7 - z11) rotated (90 - angle (z7 - z11)) shifted z11; z144 = (z7 - z11) rotated ((2/3) * (90 - angle (z7 - z11))) shifted z11; z145 = (z7 - z11) rotated ((1/3) * (90 - angle (z7 - z11))) shifted z11; z151 = (z7 - z11) rotated -2 shifted z11; z152 = (z7 - z11) rotated -5 shifted z11; z153 = (z7 - z11) rotated -10 shifted z11; z154 = (z7 - z11) rotated -15 shifted z11; z155 = (z7 - z11) rotated -20 shifted z11; z156 = (z7 - z11) rotated -25 shifted z11; z157 = (z7 - z11) rotated -30 shifted z11; z158 = (z7 - z11) rotated -35 shifted z11; z159 = (z7 - z11) rotated -40 shifted z11; z160 = (z7 - z11) rotated -45 shifted z11; z161 = (z7 - z11) rotated -50 shifted z11; z162 = (z7 - z11) rotated -55 shifted z11; z163 = (z7 - z11) rotated -60 shifted z11; z164 = (z7 - z11) rotated -65 shifted z11; z165 = (z7 - z11) rotated -70 shifted z11; draw z1--z2; draw z3--z11; draw z4--z8--z9--cycle; draw halfcircle scaled (x2 - x1) shifted z0; draw z1--z12; draw z13--z19; draw z10--z12; draw z11--z13; draw z12--z14; draw z13--z15; draw z6..z101..z102..z103..z104..z105..z7; draw z6..z141..z142..z143..z144..z145..z7; draw z111..z112..z113..z114..z115..z116..z117..z118..z119..z120..z121..z122; draw z151..z152..z153..z154..z155..z156..z157..z158..z159..z160.. z161..z162..z163..z164..z165; draw z4--z18--z2; drawarrow z21{dir 80}..{dir 10}z22; drawarrow z23{dir 260}..{dir 190}z24; label.ulft( btex $A$ etex, z6); label.urt( btex $B$ etex, z7); label.lrt( btex $C$ etex, z2); label.llft( btex $D$ etex, z1); label.top( btex $E$ etex, z3); label.llft( btex $F$ etex, z4); label.ulft( btex $G$ etex, z14); label.llft( btex $H$ etex, z15); label.llft( btex $I$ etex, z5); label.llft( btex $L$ etex, z0); label.lft( btex $M$ etex, z10); label.lft( btex $N$ etex, z11); label.rt( btex $P$ etex, z12); label.urt( btex $Q$ etex, z13); label.urt( btex $Z'$ etex, z18); label.llft( btex $P'$ etex, z16); label.llft( btex $Q'$ etex, z17); label.top( btex $O'$ etex, z9); label.top( btex $O''$ etex, z8); endfig; beginfig(2); z0 = (6u, 4u); % z0 is L z1 = z0 - (2u,0); % z1 is D z2 - z0 = z0 - z1; % z2 is C z3 - z0 = (z2 - z0) rotated 90; % z3 is E z0 - z4 = z3 - z0; % z4 is F z5 = 2 [z0, z3]; % z5 is I z6 = 0.5 [z0, z3]; % unlabelled z6 - z7 = (1+-+(1/2)) * (z0 - z1); % z7 is X z8 - z6 = z6 - z7; % z8 is X' z9 = whatever [z5, z5 + (z1 - z2)] = whatever [z4, z1]; % z9 is O'' z10 - z5 = z5 - z9; % z10 is O' z11 = (z2 - z0) rotated 60 shifted z0; % z11 is Z' z12 = whatever [z2, z11] = whatever [z9, z10]; % z12 is Q' z13 = whatever [z4, z11] = whatever [z9, z10]; % z13 is P' z5 - z14 = z13 - z5; % z14 is P'' z15 = 0.3 [z0, z3]; % z15 is W draw z4--z5; draw z5--z7; draw z5--z8; draw z1--z2; draw z9--z10; draw z4--z9; draw z4--z10; draw z2--z12; draw z4--z13; draw z15--z12; draw z15--z13; draw z15--z14; draw z15--z10; draw z3--z7--z4; draw z7..z15..z8; draw fullcircle scaled (x2 - x1) shifted z0; label.lrt( btex $C$ etex, z2); label.llft( btex $D$ etex, z1); label.urt( btex $E$ etex, z3); label.bot( btex $F$ etex, z4); label.top( btex $I$ etex, z5); label.llft( btex $L$ etex, z0); label.top( btex $O'$ etex, z10); label.top( btex $O''$ etex, z9); label.top( btex $P'$ etex, z13); label.top( btex $P''$ etex, z14); label.top( btex $Q'$ etex, z12); label.lrt( btex $W$ etex, z15); label.lft( btex $X$ etex, z7); label.rt( btex $X'$ etex, z8); label.llft( btex $Z'$ etex, z11); endfig; bye;