input constantes; input geometriepoint; beginfig(1); affixe.A(u*(1,1)); affixe.B(u*(7,1)); affixe.O(1/2[z.A,z.B]); affixe.X((0,0)); path cc,cd,ce,cf; cd=cercle(X,3cm); cc=cd yscaled 0.4; ce=(subpath(0,0.5*length cc) of cc) shifted z.O; label.llft(btex $A$ etex,z.A); label.lrt(btex $B$ etex,z.B); affixe.M(point(0.3*length ce) of ce); label.urt(btex $M$ etex,z.M); draw z.B--z.M--z.A dashed evenly; draw z.A--z.B; affixe.H(projet(M,A,B) shifted (1/10*(z.A-z.B))); draw codeperp(M,H,A,5); draw z.M--z.H dashed evenly; affixe.S(z.M shifted (u*(0,4))); draw z.A--z.S--z.B; draw z.S--z.M dashed evenly; draw codeperp(S,M,A,5); label.top(btex $S$ etex,z.S); label.bot(btex $H$ etex,z.H); affixe.N((z.S--z.A) intersectionpoint ce); z.L=z.X shifted (xpart(z.N-z.O),0); z.K=cd intersectionpoint perpen(L,A,B,10); cf=((subpath(0,(angle(z.K-z.X)*(length cd))/360) of cd) yscaled 0.4) shifted z.O; draw cf dashed evenly; draw ((subpath((angle(z.K-z.X)*(length cd))/360,(length cd)/2) of cd) yscaled 0.4) shifted z.O; endfig; end