Fichier geometrie.mp (figure 12) — Modifié le 20 Juin 2008 à 22 h 21

geometrie.mp (figure 12)
Source

input constantes;
input papiers;
%% MACROS
%% define draw_mark (crossmarks on lines) and similar angle marking operations
%%
%% These macros are stolen from mpman.ps and manfig.mp
marksize:=4pt; % how big the tics on lines are
 % how big the arc in an angle is. We define it using := rather than = so that
% it can easily be overridden later if desired.
default_angle_radius:=28pt;
angle_radius:=default_angle_radius ;

% don't use this; it is used by draw_marked. Use that instead.
def draw_mark(expr p, a) =
  begingroup
  save t, dm; pair dm;
  t = arctime a of p;
  dm = marksize*unitvector direction t of p
    rotated 90;
  draw (-.5dm.. .5dm) shifted point t of p;
  endgroup
enddef;

% draws n tics in the middle of path p
def draw_marked(expr p, n) =
  begingroup
  save amid;
  amid = .5*arclength p;
  for i=-(n-1)/2 upto (n-1)/2:
    draw_mark(p, amid+.6marksize*i);
  endfor
  draw p;
  endgroup
enddef;
%idem mais ne trace pas le chemin.
def marked(expr p, n) =
  begingroup
  save amid;
  amid = .5*arclength p;
  for i=-(n-1)/2 upto (n-1)/2:
    draw_mark(p, amid+.6marksize*i);
  endfor
  %draw p;
  endgroup
enddef;

% draw an angle arc and label it with n tics.
def mark_angle(expr a, b, c, n) =
  begingroup
  save s, p; path p;
  p = unitvector(a-b){(a-b)rotated 90}..unitvector(c-b);
  s = .9marksize/length(point 1 of p - point 0 of p);
  if s<angle_radius: s:=angle_radius; fi
 draw_marked(p scaled s shifted b, n);
  endgroup
enddef;

% written by DJCM mar 2003
% just like mark_angle but in addition to the n tics also add the
%   label "texts" which is typically           something like    btex $\alpha$ etex
%   at a sensible location near the arc.
default_label_distance_factor := 2.3 ;
label_distance_factor := default_label_distance_factor ;
def label_angle(expr a, b, c, n, texts ) =
  begingroup
  save s, p; path p;
  p = unitvector(a-b){(a-b)rotated 90}..unitvector(c-b);
  % the clever notation (x){y}..(z) forces the curve x..z to have tangent y at x.
  % (x)..(z) would make the simplest curve from x to z, namely a straight line.
  s = .9marksize/length(point 1 of p - point 0 of p);
  if s<angle_radius: s:=angle_radius; fi
  draw_marked(p scaled s shifted b, n);

  save lc ; pair lc ; % label coordinates added by DJCM
  ldfs := label_distance_factor*s ;
  lc = point 0.5 of ( p scaled ldfs shifted b ) ;
  label ( texts , lc );
  %label (btex texts etex , lc ); %marche pas...

  endgroup
enddef;

def mark_rt_angle(expr a, b, c) =
  draw ((1,0)--(1,1)--(0,1))
         zscaled (angle_radius*unitvector(a-b)) shifted b
  % not sure what zscaled means
       enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



beginfig(1)  %%%% Carré ABCD
  u:=3cm; %phi=(1+sqrt5)/2;
  pair A,B,C,D,E,F;
  A:=(0,1)*u; B:=(0,0)*u; C:=(1,0)*u; D:=(1,1)*u;% E:=(1,0)*u; F:=(1,1)*u;
    %pickup pencircle scaled 0.5bp;
  draw A--B--C--D--cycle;
  %draw E--F;
  label.ulft(btex $A$ etex, A);
  label.llft(btex $B$ etex, B);
  label.lrt(btex $C$ etex, C);
  label.urt(btex $D$ etex, D);
  %label.bot(btex $E$ etex, E);
  %label.top(btex $F$ etex, F);
endfig;

beginfig(2)  %%%% Fig exo Carré et 2 tri eq
  u:=3cm;
  pair A,B,C,D,E,F;
  A:=(0,1)*u; B:=(0,0)*u; C:=(1,0)*u; D:=(1,1)*u; E:=(0.5,0.5*sqrt 3)*u; F:=(1+0.5*sqrt 3,0.5)*u;

  %draw A--B--C--D--cycle;
  %draw B--E--C;  draw D--F--C;

  label.ulft(btex $A$ etex, A);
  label.llft(btex $B$ etex, B);
  label.lrt(btex $C$ etex, C);
  label.urt(btex $D$ etex, D);
  label.urt(btex $E$ etex, E);
  label.rt(btex $F$ etex, F);
  draw_marked(A--B,2);
  draw_marked(C--B,2);
  draw_marked(A--D,2);
   draw_marked(D--C,2);
  draw_marked(E--B,2);
  draw_marked(E--C,2);
   draw_marked(D--F,2);
  draw_marked(F--C,2);
%  draw_marked(A--B,2);
 % mark_rt_angle(A,D,C)
%draw A--B--C  scaled 0.1 shifted D;
 draw (0.93,1)*u--(0.93,0.93)*u--(1,0.93)*u;
endfig;

beginfig(3)  %%%% Fig exo Carré et 2 tri eq Version avec une rotation (pt G)
  u:=3cm;
  pair A,B,C,D,E,F,G;
  A:=(0,1)*u; B:=(0,0)*u; C:=(1,0)*u; D:=(1,1)*u; E:=(0.5,0.5*sqrt 3)*u; F:=(1+0.5*sqrt 3,0.5)*u;
    %pickup pencircle scaled 0.5bp;
  draw A--B--C--D--cycle;
  draw B--E--C;  draw D--F--C;

  label.ulft(btex $A$ etex, A);
  label.llft(btex $B$ etex, B);
  label.lrt(btex $C$ etex, C);
  label.urt(btex $D$ etex, D);
  label.urt(btex $E$ etex, E);
  label.rt(btex $F$ etex, F);
  marked(A--B,2);
  marked(C--B,2);
  marked(A--D,2);
   marked(D--C,2);
  marked(E--B,2);
  marked(E--C,2);
   marked(D--F,2);
  marked(F--C,2);
%  marked(A--B,2);
 % mark_rt_angle(A,D,C)
%draw A--B--C  scaled 0.1 shifted D;
  draw (0.93,1)*u--(0.93,0.93)*u--(1,0.93)*u;
  G=A rotatedaround(C,60);
  draw A--C--G--A dashed evenly scaled 0.5; %withdots scaled 0.2;
  label.ulft(btex $G$ etex, G);
  marked(A--C,3);
  marked(A--G,3);
  marked(G--C,3);

endfig;

beginfig(4)  %%%% Triangle qq angles marques
  u:=2cm;
 angle_radius:=0.25default_angle_radius ;
pair A,B,C,D,E,F,I,J,K;
path p,q,r;
transform T;
B:=(0.3,1)*u; A:=(0,0)*u; C:=(1,0)*u;
p=A--B--C--cycle;
draw p;
label.lft(btex $A$ etex, A);
  label.top(btex $B$ etex, B);
  label.rt(btex $C$ etex, C);
  mark_angle(C,A,B,1);
  mark_angle(A,B,C,2);
  mark_angle(B,C,A,0);
 % T=identity
endfig;


beginfig(5)  %%%% On se ramène à une configuration de Thales (Triso semblables)
  u:=2cm;
 angle_radius:=0.25default_angle_radius ;
pair A,B,C,D,E,F,I,J,K;
path p,q,r;
transform T, TT;
B:=(0.3,1)*u; A:=(0,0)*u; C:=(0.9,0)*u;
p=A--B--C--cycle;
draw p;
label.lft(btex $A$ etex, A);
  label.top(btex $B$ etex, B);
  label.rt(btex $C$ etex, C);
  mark_angle(C,A,B,1);
  mark_angle(A,B,C,2);
  mark_angle(B,C,A,0);
  T=identity scaled 1.5 rotated 70 shifted (2*u,0.1*u) ;
  TT=identity rotated 70 shifted (2*u,0.1*u) ;
  q=p transformed T;
  r=p transformed TT;
  draw q;
  draw r;
   I=A transformed T; label.rt(btex $I$ etex, I);
   J=B transformed T; label.top(btex $J$ etex, J);
   K=C transformed T; label.top(btex $K$ etex, K);
   D=A transformed TT; label.llft(btex $A'$ etex, D);
   E=B transformed TT; label.llft(btex $B'$ etex, E);
   F=C transformed TT; label.rt(btex $C'$ etex, F);

   mark_angle(K,I,J,1);
  mark_angle(I,J,K,2);
  mark_angle(J,K,I,0);

 % mark_angle(F,D,E,1);
  mark_angle(D,E,F,2);
  mark_angle(E,F,D,0);

endfig;

beginfig(6)  %%%Deux angles qui interceptent le meme arc
  u:=2cm;
  pair O,A,B,C,D,E,F,I,J,K;
  path p,q,r;
  p=fullcircle scaled u;
  draw p;
  O:=(0,0);
  dotlabel.bot(btex $O$ etex, O);
  A:=point 3.2 of p; label.ulft(btex $A$ etex, A);
  B:=point 5 of p; label.llft(btex $B$ etex, B);
  C:=point 7.5 of p; label.lrt(btex $C$ etex, C);
  D:=point 1.7 of p; label.ulft(btex $D$ etex, D);
  draw A--B--C--D--B--C--A;

  mark_angle(B,A,C,0);
  mark_angle(B,D,C,0);
endfig;

beginfig(7)  %%% Angle au sommet et angle au centre
  u:=3cm;
  pair A,B,C,D,E,F,I,J,K;
  path p,q,r;
   u:=2cm;
  pair O,A,B,C,D,E,F,I,J,K;
  path p,q,r;
  p=fullcircle scaled u;
  draw p;
  O:=(0,0);
  label.top(btex $O$ etex, O);
  A:=point 2.6 of p; label.ulft(btex $A$ etex, A);
  B:=point 5 of p; label.llft(btex $B$ etex, B);
  C:=point 7.5 of p; label.lrt(btex $C$ etex, C);
  %D:=point 1.7 of p; label.ulft(btex $D$ etex, D);
  draw C--A--B--C--O--B;

  %mark_angle(B,A,C,1);
  %mark_angle(B,O,C,2);
  label_angle(B,O,C,2, btex $\beta$ etex);
  label_angle(B,A,C,1, btex $\alpha$ etex);
endfig;

beginfig(8)  %%% Triangle rect inscrit dans cercle
   u:=3cm;
  pair A,B,C,D,E,F,I,J,K;
  path p,q,r;
   u:=2cm;
  pair O,A,B,C,D,E,F,I,J,K;
  path p,q,r;
  p=fullcircle scaled u;
  draw p;
  O:=(0,0);
  dotlabel.bot(btex $O$ etex, O);
  A:=point 2 of p; label.top(btex $A$ etex, A);
  B:=point 3.5 of p; label.lft(btex $B$ etex, B);
  C:=point 7.5 of p; label.lrt(btex $C$ etex, C);
  %D:=point 1.7 of p; label.ulft(btex $D$ etex, D);
  draw C--A--B--cycle;

  mark_rt_angle(B,A,C);
  %mark_angle(B,O,C,2);
endfig;

beginfig(9)  %%% Paralleles angles correspondants
  u:=2cm; angle_radius:=0.4default_angle_radius ;
  pair A,B,C,D,E,F,I,J,K;
  path p,q,r;
  A:=(-1,0)*u; B:=(1,0)*u;
  C:=(-1,0.5)*u; D:=(1,0.5)*u;
  %p=(-1.2,0.5)*u--(1.2,0.5)*u rotated 60;
  E:=(-0.5,0)*u; F:=(0.5,0.5)*u;
  I:=(-1,-0.25)*u; J:=(1,0.75)*u;
  draw A--B;
  draw C--D;
  draw I--J;
  mark_angle(B,E,J,0);
  mark_angle(D,F,J,0);
endfig;

beginfig(10)  %%% Paralleles angles alt-int
  u:=2cm;
  pair A,B,C,D,E,F,I,J,K;
  path p,q,r;
  A:=(-1,0)*u; B:=(1,0)*u;
  C:=(-1,0.5)*u; D:=(1,0.5)*u;
  %p=(-1.2,0.5)*u--(1.2,0.5)*u rotated 60;
  E:=(-0.5,0)*u; F:=(0.5,0.5)*u;
  I:=(-1,-0.25)*u; J:=(1,0.75)*u;
  draw A--B;
  draw C--D;
  draw I--J;
  mark_angle(B,E,J,0);
  mark_angle(C,F,E,0);
endfig;


beginfig(11)  %%% Opposé par le sommet
  u:=2cm;
  pair A,B,C,D,E,F,I,J,K;
  path p,q,r;
  A:=(0.1,-0.6)*u; B:=(-0.1,0.6)*u;
  C:=(-1,0.5)*u; D:=(1,-0.5)*u;
  O:=(0,0);
  draw A--B;
  draw C--D;
   mark_angle(A,O,D,0);
  mark_angle(B,O,C,0);
endfig;

beginfig(12)  %%% Parallélogramme angles codés
  u:=2cm;
  pair A,B,C,D,E,F,I,J,K;
  path p,q,r;
  A:=(-1,0)*u; B:=(0.5,0)*u;
  C:=(1,1)*u; D:=(-0.5,1)*u;
  O:=(0,0); I:=(-0.8,1)*u;
  draw A--B--C--D--cycle;
  %label.bot(btex $A$ etex, A);
  %label.bot(btex $B$ etex, B);
  %label.top(btex $C$ etex, C);
  %label.top(btex $D$ etex, D);
  mark_angle(C,B,A,2);
  mark_angle(B,A,D,0);

  mark_angle(A,D,C,2);
  mark_angle(D,C,B,0);
  angle_radius:=0.3default_angle_radius ;
  draw I--D dashed evenly scaled 0.5;
  mark_angle(I,D,A,0);
endfig;


beginfig(13)  %%% Parallélogramme ABCD
  u:=2cm;
  pair A,B,C,D,E,F,I,J,K;
  path p,q,r;
  A:=(-1,0)*u; B:=(0.5,0)*u;
  C:=(1,1)*u; D:=(-0.5,1)*u;
  O:=(0,0);
  draw A--B--C--D--cycle;
  label.bot(btex $A$ etex, A);
  label.bot(btex $B$ etex, B);
  label.top(btex $C$ etex, C);
  label.top(btex $D$ etex, D);

endfig;

beginfig(14)  %%% Triangle isocèle ABC angles codés
  u:=1cm;
  pair A,B,C,D,E,F,I,J,K;

  A:=(-1,0)*u; B:=(1,0)*u; C:=(0,2)*u;
  %D:=(-0.5,1)*u;
  %O:=(0,0);
  draw A--B;
  label.bot(btex $A$ etex, A);
  label.bot(btex $B$ etex, B);
  label.top(btex $C$ etex, C);
  %label.top(btex $D$ etex, D);
  draw_marked(C--A,2); draw_marked(C--B,2);
mark_angle(B,A,C,0); mark_angle(C,B,A,0);
endfig;


beginfig(15)  %%% Triangle rect hauteur tracée
   u:=3cm;
  pair A,B,C,D,E,F,H,J,K;
  path p,q,r;
   u:=3cm;

  p=fullcircle scaled u;
  %draw p;
  %O:=(0,0);
  %dotlabel.bot(btex $O$ etex, O);
  C:=point 0 of p; label.bot(btex $C$ etex, C);
  B:=point 4 of p; label.bot(btex $B$ etex, B);
  A:=point 1.5 of p; label.top(btex $A$ etex, A);
  H:=(xpart A, 0) ; label.bot(btex $H$ etex, H);
  %D:=point 1.7 of p; label.ulft(btex $D$ etex, D);
  draw C--A--B--cycle;
  draw A--H;
angle_radius:=0.2default_angle_radius ;
  mark_rt_angle(B,A,C);  mark_rt_angle(C,H,A);
  %mark_angle(B,O,C,2);
endfig;


beginfig(16)  %%% Puissance d'un point (intérieur)

  pair A,B,C,D,E,F,H,J,K;
  path p,q,r;
   u:=3cm;

  p=fullcircle scaled u;
  draw p;
  O:=(0,0);
  %dotlabel.bot(btex $O$ etex, O);
  A:=point 1.5 of p; label.top(btex $A$ etex, A);
  B:=point 3 of p; label.ulft(btex $B'$ etex, B);
  C:=point 4.8 of p; label.llft(btex $B$ etex, C);
  D:=point 0.5 of p; label.rt(btex $A'$ etex, D);
  H:=whatever[A,C]=whatever[B,D]; % H: Point d'intersection de (AC) et (BD)
  draw C--A; draw D--B;
  dotlabel.bot(btex $M$ etex, H);
  label.lrt(btex $\Gamma$ etex, point 7 of p ); %Cercle Gamma
  %draw C--A--B--cycle;

endfig;

beginfig(17)  %%% Puissance d'un point (extérieur)

  pair A,B,C,D,E,F,H,J,K;
  path p,q,r;
   u:=3cm;

  p=fullcircle scaled u;
  draw p;
  O:=(0,0);
  %dotlabel.bot(btex $O$ etex, O);
  A:=point 1.5 of p; label.top(btex $A$ etex, A);
  B:=point 3 of p; label.ulft(btex $B$ etex, B);
  C:=point 5.5 of p; label.llft(btex $B'$ etex, C);
  D:=point 0.5 of p; label.rt(btex $A'$ etex, D);
  H:=whatever[A,B]=whatever[C,D]; % H: Point d'intersection de (AB) et (CD)
  draw B--H--C;
  label.rt(btex $M$ etex, H);
  label.lrt(btex $\Gamma$ etex, point 7 of p ); %Cercle Gamma
  %draw C--A--B--cycle;

endfig;


beginfig(18)  %%% Spirale d'Archimède
  pair A[],O;
   u:=2cm;
   O:=(0,0); A0=(1,0)*u;
   angle_radius:=0.2default_angle_radius ;
   %marksize:=2pt;
   marked(O--A0,2);
  dotlabel.bot(btex $O$ etex, O);

  for i=0 upto 15:

    A[i+1]:=A[i] rotated 90 scaled u/abs(A[i]) shifted A[i];
    draw O--A[i]--A[i+1];
    marked(A[i]--A[i+1],2);
    mark_rt_angle(A[i+1],A[i],O);

  endfor
  draw O--A[16];
  drawarrow(-3,0)*u--(4.5,0)*u dashed evenly;
  drawarrow(0,-3.5)*u--(0,2)*u dashed evenly;
  %marksize:=4pt;

endfig;

beginfig(19)  %%%
  pair A[],O;
   u:=0.1cm;
   O:=(0,0); A0=(1,0)*u;
   angle_radius:=0.2default_angle_radius ;
   %marksize:=2pt;

  dotlabel.bot(btex $O$ etex, O);

  for i=0 upto 1000:
       A[i+1]:=A[i] rotated 90 scaled u/abs(A[i]) shifted A[i];
    draw A[i]--A[i+1];
     endfor
  endfig;



  
beginfig(19) %construction regle et compas de sqrt(13)
    u:=1cm;
    papierun((0,0),(4,3),0.3white);%papiercinq((0,0),(3,4),orange);
    pair A[],O;
    path p, pp;
  numeric L;
    O:=(0,0);
    A2:=O shifted(1,0)*u;
   A3:=O shifted(0,1)*u;
   angle_radius:=0.5default_angle_radius ;
   drawarrow O--A2;
   drawarrow O--A3;

   A0:=O shifted(3,2)*u;
   A1:=O shifted(4,0)*u; %point B
   draw O--A0;
%   draw A1..A0{down};
   L=2*(13**(0.5))*u;
   p=fullcircle  scaled L shifted O;
%7.21110u shifted O;
   A4:= point 1 of p;
   A5:= point 0 of p;
   draw subpath (0,1) of p dashed evenly;

   dotlabel.bot(btex $B$ etex, A5);
   dotlabel.urt(btex $A$ etex, A0);
   label.llft(btex $O$ etex, O);
   %pp= A1--O--A0;
  % draw p cutbefore pp;
  % draw p;
 endfig;
  
beginfig(20) %construction regle et compas de 5/3
    u:=1cm;
    papierun((0,0),(5,4),0.3white);%papiercinq((0,0),(3,4),orange);
    pair A[],O;

    O:=(0,0);
   A2:=O shifted(1,0)*u;
   A3:=O shifted(0,1)*u;
   angle_radius:=0.5default_angle_radius ;
   drawarrow O--A2;
   drawarrow O--A3;
  A7:=O shifted(4.5,3.9)*u;
   A0:=point 0.85 of (O--A7); %O shifted(3.82,3.3)*u; %point B
   A1:=O shifted(5,0)*u; %point C
   A4:=O shifted(5/3,0)*u; %point D
   A5:=1/3[O,A0]; %point A
   A6:=2/3[O,A0]; %point  au deux tiers de OB

   draw O--A7;
   draw A1--A0 dashed evenly;
   draw A4--A5 dashed evenly;

   dotlabel.bot(btex $C$ etex, A1);
   dotlabel.bot(btex $D$ etex, A4);
   dotlabel.top(btex $B$ etex, A0);
   dotlabel.top(btex $A$ etex, A5);
    dotlabel.ulft(btex $$ etex,  A6);
    label.llft(btex $O$ etex, O);
    label.lrt(btex $\Delta$ etex, A7);
   marked(O--A5,2);
   marked(A6--A5,2);
    marked(A6--A0,2);
  endfig;
  
beginfig(21)  %%%% Triangle qq angles NON  marques
  u:=2cm;
 angle_radius:=0.25default_angle_radius ;
pair A,B,C,D,E,F,I,J,K;
path p,q,r;
%transform T;
B:=(0.3,1)*u; A:=(0,0)*u; C:=(1,0)*u;
p=A--B--C--cycle;
draw p;
label.lft(btex $B$ etex, A);
  label.top(btex $A$ etex, B);
  label.rt(btex $C$ etex, C);
 % mark_angle(C,A,B,1);
 % mark_angle(A,B,C,2);
 % mark_angle(B,C,A,0);
 % T=identity
endfig;

beginfig(22)  %%%% Triangle qq angles NON  marques
  u:=2cm;
 angle_radius:=0.25default_angle_radius ;
pair A,B,C,D,E,F,I,J,K;
path p,q,r;
transform T;
B:=(0.3,1)*u; A:=(0,0)*u; C:=(1,0)*u;
p=A--B--C--cycle;
draw p;
label.lft(btex $C$ etex, A);
  label.top(btex $A$ etex, B);
  label.rt(btex $B$ etex, C);
 % mark_angle(C,A,B,1);
 % mark_angle(A,B,C,2);
 % mark_angle(B,C,A,0);
 % T=identity
endfig;

beginfig(23)  %%%% Carré ABCD + triso
  u:=3cm; %phi=(1+sqrt5)/2;
  pair A,B,C,D,I,J, K;
  A:=(0,1)*u; B:=(0,0)*u; C:=(1,0)*u; D:=(1,1)*u;% E:=(1,0)*u; F:=(1,1)*u;
  I:=(0.65,0)*u; J:=(1,0.65)*u;
  K=whatever[A,I]=whatever[B,J];
    %pickup pencircle scaled 0.5bp;
  draw A--B--C--D--cycle;
  draw A--I;
  draw B--J;
  marked(B--I,2); marked(C--J,2);
  %mark_rt_angle(A,K,J); % c'est ce qu'il faut prouver!

  label.ulft(btex $A$ etex, A);
  label.llft(btex $B$ etex, B);
  label.lrt(btex $C$ etex, C);
  label.urt(btex $D$ etex, D);
  label.bot(btex $I$ etex, I);
  label.rt(btex $J$ etex, J);
  label.top(btex $K$ etex, K);
endfig;
 
beginfig(24); %Construction pentagone reg avec rectangle d'Or

u:=2cm; phi:=(1+sqrt5)/2;
  pair A,B,C,D,E,F,G,H,I,J,K[];
  A:=(0,1)*u; B:=(0,0)*u; C:=(phi,0)*u; D:=(phi,1)*u; E:=(1,0)*u; F:=(1,1)*u; G:=(2,0)*u;
  %draw A--C; draw D--E;
  pickup pencircle scaled 0.5pt;
  draw B--C;
  draw E--F;
  %pickup pencircle scaled 0.5pt;
  draw B--G;
  %label.ulft(btex $A$ etex, A);
  label.llft(btex $B$ etex, B);
  label.bot(btex $C$ etex, C);
  %label.urt(btex $D$ etex, D);
  label.bot(btex $E$ etex, E);
  label.top(btex $F$ etex, F);
  I=0.5*(E-B);
   J=0.5*(C-E)+E;
  dotlabel.bot(btex $I$ etex, I);
  draw I--F dashed evenly;
  path p, q, r,s;
  p = halfcircle scaled ((phi-0.5)*2u) shifted I;
    %draw p dashed evenly;
  q=subpath (0,1.6) of p;
  draw q dashed evenly;
  draw_marked(B--I,2);
  draw_marked(E--I,2);
%%%
  r = fullcircle scaled 2u shifted E;
  draw r;
  s= (J--(2.5*u,0) rotatedaround(J,90));
  draw s dashed evenly;
  K[1]= r intersectionpoint s;
  dotlabel.urt(btex $A_1$ etex, K[1]);
  draw_marked(E--J,3);
  draw_marked(C--J,3);
  K[2]=K[1] rotatedaround(E,72);
  K[3]=K[2] rotatedaround(E,72);
  K[4]=K[3] rotatedaround(E,72);
  K[5]=K[4] rotatedaround(E,72);
  dotlabel.ulft(btex $A_2$ etex, K[2] );
  dotlabel.llft(btex $A_3$ etex, K[3] );
  dotlabel.lrt(btex $A_4$ etex, K[4] );
  dotlabel.urt(btex $A_0$ etex, K[5] );
  draw K[5]--K[1]--K[2]--K[3]--K[4]--cycle;
    endfig;
%%%%%%%%
    end