Patates pour des quadrilatères.

Suite à une demande de Nicolas Roux, j'ai crée cette macro permettant d'obtenir des patates en forme de patates :) et différentes les unes des autres. Elles sont dessinées à partir d'un losange de centre cent et de diagonales de longueur Di et di.

Nicolas a ensuite utilisé cette macro pour produire la figure ci-dessous.

patates.mp [ source brut ]

 %@Auteur:Nicolas Roux (Macro patate: Christophe)

 %@Date:07/06/2007

 
 input geometriesyr16;
 
 vardef patate(expr cen,Di,di)=
   save $;
   picture $;
   pair po[];
   po1=cen shifted(u*(0,di/2));
   po2=cen shifted(u*(-Di/2,0));
   po3=symetrie(po1,cen);
   po4-po3=po1-po2;
   numeric dev;
   dev=-10+uniformdeviate(20);
   $=image(
     trace po1{dir(-180+dev)}..po2{dir(-90+dev)}..po3{dir(0+dev)}..{dir(90+dev)}po4..cycle;
     );
   $
 enddef;
 
 
Conversion au format PDF de patates.1
 figure(0,0,20u,15u);
 u:=0.7cm;
 pair A,B,C,D,E,F,G,H,I,J,K,L,M,N,P;
 A=u*(0,0);
 B-A=u*(1.5,1);
 C=rotation(A,B,-90);
 D-C=A-B;
 picture carre,rectangle,losange,plg;
 carre=image(
   trace polygone(A,B,C,D);
   trace Codelongueur(A,B,B,C,C,D,D,A,2);
   trace codeperp(A,B,C,5);
   trace codeperp(B,C,D,5);
   trace codeperp(C,D,A,5);
   trace codeperp(D,A,B,5);
   );
 E=u*(0,0);
 F-E=u*(2,0);
 G=rotation(E,F,-90);
 H-E=u*(3,0);
 I-H=G-F;
 J-E=G-F;
 rectangle=image(
   trace polygone(E,H,I,J);
   trace Codelongueur(E,H,J,I,4);
   trace Codelongueur(E,J,H,I,1);
   trace codeperp(E,H,I,5);
   trace codeperp(H,I,J,5);
   trace codeperp(I,J,E,5);
   trace codeperp(J,E,H,5);
   );
 K-A=u*(1,2);
 L-A=u*(1,-2);
 M-A=u*(2,0);
 losange=image(
   trace polygone(A,K,M,L);
   trace Codelongueur(A,K,K,M,M,L,L,A,3);
   );
 N=rotation(A,B,120)*1.5;
 P-N=A-B;
 plg=image(
   trace polygone(A,B,N,P);
   trace Codelongueur(A,B,N,P,5);
   trace Codelongueur(B,N,A,P,1);
   );
 trace patate(u*(10,7.5),18,13);
 trace carre shifted(u*(10,8.5));
 trace rectangle shifted(u*(13.5,6));
 trace losange shifted(u*(4,8.5));
 trace plg shifted(u*(8,2));
 trace patate(u*(8,7.5),10,9);
 trace patate(u*(12,7.5),10,9);
 trace u*(0,0)--u*(20,0)--u*(20,15)--u*(0,15)--u*(0,0);
 trace appelation((7u,13u),(13u,13u),2mm,btex Parall\'elogrammes etex);
 trace appelation((12u,10u),(15u,10u),2mm,btex Rectangles etex);
 trace appelation((5u,5u),(7u,5u),2mm,btex Losanges etex);
 trace appelation((10u,5u),(11u,5u),2mm,btex Carr\'es etex);
 trace appelation((8u,0.2u),(12u,0.2u),2mm,btex Quadrilat\`eres etex);
 fin;
 end