input geometriesyr16;

vardef cotationarc(expr aaa,bbb,decal,ecart,sens,texte)=%pour le texte sens=1 ou -1
  save ty;
  picture ty;
  pair mnp,ctr;
  mnp=iso(aaa,bbb)+decal*unitvector(rotation(bbb,iso(aaa,bbb),90)%
    -iso(aaa,bbb));
  ctr=CentreCercleC(aaa,bbb,mnp);
  path cts[];
  cts0=arccercle(bbb,aaa,ctr);
  cts1=arccercle(bbb,cts0 intersectionpoint%
    perpendiculaire(aaa,bbb,iso(aaa,bbb)),ctr);
  cts2=arccercle(cts0 intersectionpoint%
    perpendiculaire(aaa,bbb,iso(aaa,bbb)),aaa,ctr);
  ty=image(
    trace subpath(0,arctime(arclength cts1*(1-(ecart/10))) of cts1)%
    of cts1 dashed evenly;
    trace subpath(0,arctime(arclength cts2*(1-(ecart/10)))%
      of reverse(cts2)) of reverse(cts2) dashed evenly;
    if sens=1:
      label(texte rotated (angle(bbb-aaa)),mnp);
    else:
      label(texte rotated (angle(bbb-aaa)+180),mnp);
    fi;
    );
  ty
enddef;

figuremainlevee(0,0,4u,4u);
pair I,B,C,D;
B=u*(0.5,1.5);
C-B=u*(3,-1);
D=3/5[B,rotation(C,B,90)];
I=milieu(C,D);
trace polygone(B,C,D);
trace codeperp(D,B,C,5);
trace segment(B,I);
trace Codelongueur(D,I,I,C,2);
trace cotationarc(D,C,8mm,3,1,btex 8~cm etex);
nomme.lft(B);
nomme.lrt(C);
nomme.top(D);
nomme.top(I);
finmainlevee;

figuremainlevee(0,0,3.8u,4u);
pair T,P,G,M,N;
T=u*(1,0.5);
P-T=u*(2.5,1);
G-T=u*(-0.5,2.5);
M=milieu(G,T);
N=milieu(P,G);
trace polygone(G,T,P);
trace droite(M,N);
trace Codelongueur(T,M,M,G,2);
trace Codelongueur(G,N,N,P,4);
nomme.lft(T);
nomme.top(G);
nomme.lrt(P);
nomme.ulft(M);
nomme.top(N);
finmainlevee;

figuremainlevee(0,0,4u,4u);
pair R,V,N,T,O;
V=u*(0.5,2);
R-V=u*(1,-1.5);
T-V=u*(0.5,1.25);
N-T=R-V;
O=segment(T,R) intersectionpoint segment(V,N);
trace polygone(R,V,T,N);
trace segment(R,T);
trace segment(V,N);
trace Codelongueur(R,O,O,T,4);
trace Codelongueur(N,O,O,V,2);
nomme.lft(V);
nomme.bot(R);
nomme.rt(N);
nomme.top(T);
nomme.llft(O);
finmainlevee;

figuremainlevee(0,0,4u,4u);
pair I,L,M,P,T;
T=u*(1.5,0.5);
P-T=u*(2,1);
L=3/5[T,rotation(P,T,90)];
M-L=P-T;
I=segment(L,P) intersectionpoint segment(T,M);
trace polygone(M,L,T,P);
trace codeperp(L,T,P,5);
trace segment(T,M);
trace segment(P,L);
trace Codelongueur(L,I,I,P,2);
trace Codelongueur(T,I,I,M,4);
nomme.llft(T);
nomme.rt(P);
nomme.urt(M);
nomme.top(I);
nomme.top(L);
finmainlevee;

figuremainlevee(0,0,4u,3.75u);
pair C,T,K,I,J;
K=u*(0.5,0.5);
C-K=u*(3,1);
T=3/5[C,rotation(K,C,-90)];
I=iso(T,K);
J=iso(C,K);
trace polygone(C,T,K);
trace droite(I,J);
trace codeperp(T,C,K,5);
trace codeperp(I,J,C,5);
trace Codelongueur(K,J,J,C,2);
nomme.llft(K);
nomme.rt(C);
nomme.top(T);
nomme.lft(I);
nomme.llft(J);
finmainlevee;

end