/* Une deuxième façon de faire en exploitant l'extension geometry de Ph.Ivaldi */ import geometry; /* Variables à modifier */ // Définition de la taille de l'image size(7cm,5cm,false); // Points A et B définissant l'un des segments du polygone point A=(8,37),B=(10,57.5); // Ordonnée du point de [AB] dont on cherche l'abscisse real yM=50; /* A priori, ce qui suit ne doit pas être modifié la figure va s'adapter aux valeurs données précédemment */ // définition des axes real dx=.2(B.x-A.x), dy=.2(B.y-A.y); point ptX1=(A.x-dx,A.y-2dy),ptX2=(B.x+dx,A.y-2dy), ptY1=(A.x-2dx,A.y-dy),ptY2=(A.x-2dx,B.y+dy); draw(ptX1--ptX2^^ptY1--ptY2,.7bp+black); // définition des projections sur les axes transform pX = projection(ptX1,ptX2,ptY1,ptY2), pY = projection(ptY1,ptY2,ptX1,ptX2); // Définition du point M de [AB] d'ordonnée yM point M=intersectionpoint(line(A,B),line(0,yM)); draw(A--B,1.2bp+black); dot("$A$",A,SW,blue); dot("$B$",B,NE,blue); dot("$M$",M,SE,red); draw(pX*A--A--pY*A^^pX*B--B--pY*B,dashed+.5bp+black); draw(pX*M--M--pY*M,dashed+.8bp+green); label(format("$%f$",A.x),pX*A,S); label(format("$%f$",A.y),pY*A,W); label(format("$%f$",B.x),pX*B,S); label(format("$%f$",B.y),pY*B,W); label("$x_M$?",pX*M,S,red); label(format("$%f$",yM),pY*M,W);