Axe de similitude (mp-geom2d)
Auteur ou autrice : Maxime Chupin.
Mise en ligne le 19 mai 2025
mp-geom2d
a été écrit avec le but de proposer des macros MetaPost permettant de réaliser une figure de géométrie en collant d’assez près à une description impérative :
- Soit $A$ le point de coordonnées $(2,3)$.
- Soit $B$ le point de coordonnées $(4,5)$.
- Trace la droite $(A,B)$.
- ...
Ici, on montre les exemples de la galerie de la documentation à la fois dans l’interface en français et celle en anglais.
Code
input geom2d;
%%% depuis Drawing with Metapost de Toby Thurston
labeloffset := 6;
gddTaillePoint := 3;
gddCouleurPoint := Yellow;
gddU:=0.65cm;
beginfig(1);
C1 = Cercle((-4,0),3);
C2 = Cercle((3,0),2);
C3 = Cercle((0,-4),1);
T1 = TangenteCommuneExterieure(C1,C2);
T2 = TangenteCommuneExterieure(C2,C1);
T3 = TangenteCommuneInterieure(C1,C2);
T4 = TangenteCommuneInterieure(C2,C1);
T5 = TangenteCommuneExterieure(C2,C3);
T6 = TangenteCommuneExterieure(C3,C2);
T7 = TangenteCommuneInterieure(C2,C3);
T8 = TangenteCommuneInterieure(C3,C2);
T9 = TangenteCommuneExterieure(C1,C3);
T10 = TangenteCommuneExterieure(C3,C1);
T11 = TangenteCommuneInterieure(C1,C3);
T12 = TangenteCommuneInterieure(C3,C1);
E12 = IntersectionDroites(T1,T2);
E23 = IntersectionDroites(T5,T6);
E31 = IntersectionDroites(T9,T10);
I12 = IntersectionDroites(T3,T4);
I23 = IntersectionDroites(T7,T8);
I31 = IntersectionDroites(T11,T12);
path t[];
t1 :=(gddTraceObjet T1) gddEnPlace;
t2 := (gddTraceObjet T2) gddEnPlace;
t3 := (-10*gddU,-10*gddU)--(-10gddU,10*gddU);
fill buildcycle(t1, t3,reverse t2) withcolor 1.4*LightSlateGrey;
t4 :=(gddTraceObjet T3) gddEnPlace;
t5 := (gddTraceObjet T4) gddEnPlace;
t6 := (1.5*gddU,-10*gddU)--(1.5*gddU,10*gddU);
fill buildcycle(t4, t5,reverse t6) withcolor 1.1*LightSlateGrey;
t7 :=(gddTraceObjet T3) gddEnPlace;
t8 := (gddTraceObjet T4) gddEnPlace;
t9 := (-1.5*gddU,-10*gddU)--(-1.5*gddU,10*gddU);
fill buildcycle(t7, t8,reverse t9) withcolor 1.1*LightSlateGrey;
drawoptions(withpen pencircle scaled 1pt withcolor LightSlateGrey);
colorie C1 withcolor white;
colorie C2 withcolor white;
colorie C3 withcolor white;
trace C1; trace C2; trace C3;
drawoptions();
trace Droite(Centre(C1),Centre(C2));
trace Droite(Centre(C3),Centre(C2));
trace Droite(Centre(C1),Centre(C3));
D_E = Droite(E12,E23);
trace D_E dashed evenly withcolor DarkBlue;
E_I = Segment(E12,I31);
trace E_I dashed evenly withcolor DarkRed;
I_E1 = Segment(I12,E31);
trace I_E1 dashed evenly withcolor DarkRed;
I_E2 = Segment(I12,E23);
trace I_E2 dashed evenly withcolor DarkRed;
drawoptions();
pointe Centre(C1);
pointe Centre(C2);
pointe Centre(C3);
gddCouleurPoint := DarkBlue;
pointe E12; pointe E31; pointe E23;
gddCouleurPoint := DarkRed;
pointe I12; pointe I31; pointe I23;
label.top(btex $E_{12}$ etex,PointTOPair(E12) gddEnPlace);
label.bot(btex $E_{31}$ etex,PointTOPair(E31) gddEnPlace);
label.bot(btex $E_{23}$ etex,PointTOPair(E23) gddEnPlace);
label.top(btex $I_{12}$ etex,PointTOPair(I12) gddEnPlace);
label.llft(btex $I_{31}$ etex,PointTOPair(I31) gddEnPlace);
label.lrt(btex $I_{23}$ etex,PointTOPair(I23) gddEnPlace);
label.top(btex $C_{1}$ etex,PointTOPair(Centre(C1)) gddEnPlace);
label.top(btex $C_{2}$ etex,PointTOPair(Centre(C2)) gddEnPlace);
label.bot(btex $C_{3}$ etex,PointTOPair(Centre(C3)) gddEnPlace);
draw textext("Axe de similitude") rotated (22) shifted (0.5[Pt(E23),Pt(E12)]
gddEnPlace +(0,3));
Fenetre(-10,-10,19,7);
endfig;
end.
% %%% English version
input geom2d;
%%% from Drawing with Metapost de Toby Thurston
labeloffset := 6;
SetPointSize(3);
SetPointColor(Yellow);
gddU:=0.65cm;
beginfig(1);
C1 = Circle((-4,0),3);
C2 = Circle((3,0),2);
C3 = Circle((0,-4),1);
T1 = ExternalCommonTangent(C1,C2);
T2 = ExternalCommonTangent(C2,C1);
T3 = InternalCommonTangent(C1,C2);
T4 = InternalCommonTangent(C2,C1);
T5 = ExternalCommonTangent(C2,C3);
T6 = ExternalCommonTangent(C3,C2);
T7 = InternalCommonTangent(C2,C3);
T8 = InternalCommonTangent(C3,C2);
T9 = ExternalCommonTangent(C1,C3);
T10 = ExternalCommonTangent(C3,C1);
T11 = InternalCommonTangent(C1,C3);
T12 = InternalCommonTangent(C3,C1);
E12 = LinesIntersection(T1,T2);
E23 = LinesIntersection(T5,T6);
E31 = LinesIntersection(T9,T10);
I12 = LinesIntersection(T3,T4);
I23 = LinesIntersection(T7,T8);
I31 = LinesIntersection(T11,T12);
path t[];
t1 :=(gddTraceObjet T1) gddEnPlace;
t2 := (gddTraceObjet T2) gddEnPlace;
t3 := (-10*gddU,-10*gddU)--(-10gddU,10*gddU);
fill buildcycle(t1, t3,reverse t2) withcolor 1.4*LightSlateGrey;
t4 :=(gddTraceObjet T3) gddEnPlace;
t5 := (gddTraceObjet T4) gddEnPlace;
t6 := (1.5*gddU,-10*gddU)--(1.5*gddU,10*gddU);
fill buildcycle(t4, t5,reverse t6) withcolor 1.1*LightSlateGrey;
t7 :=(gddTraceObjet T3) gddEnPlace;
t8 := (gddTraceObjet T4) gddEnPlace;
t9 := (-1.5*gddU,-10*gddU)--(-1.5*gddU,10*gddU);
fill buildcycle(t7, t8,reverse t9) withcolor 1.1*LightSlateGrey;
drawoptions(withpen pencircle scaled 1pt withcolor LightSlateGrey);
gddFill C1 withcolor white;
gddFill C2 withcolor white;
gddFill C3 withcolor white;
gddDraw C1; gddDraw C2; gddDraw C3;
drawoptions();
gddDraw Line(Center(C1),Center(C2));
gddDraw Line(Center(C3),Center(C2));
gddDraw Line(Center(C1),Center(C3));
D_E = Line(E12,E23);
gddDraw D_E dashed evenly withcolor DarkBlue;
E_I = Segment(E12,I31);
gddDraw E_I dashed evenly withcolor DarkRed;
I_E1 = Segment(I12,E31);
gddDraw I_E1 dashed evenly withcolor DarkRed;
I_E2 = Segment(I12,E23);
gddDraw I_E2 dashed evenly withcolor DarkRed;
drawoptions();
gddDrawPoint Center(C1);
gddDrawPoint Center(C2);
gddDrawPoint Center(C3);
SetPointColor(DarkBlue);
gddDrawPoint E12; gddDrawPoint E31; gddDrawPoint E23;
SetPointColor(DarkRed);
gddDrawPoint I12; gddDrawPoint I31; gddDrawPoint I23;
gddLabel.top(btex $E_{12}$ etex,E12);
gddLabel.bot(btex $E_{31}$ etex,E31);
gddLabel.bot(btex $E_{23}$ etex,E23);
gddLabel.top(btex $I_{12}$ etex,I12);
gddLabel.llft(btex $I_{31}$ etex,I31);
gddLabel.lrt(btex $I_{23}$ etex,I23);
gddLabel.top(btex $C_{1}$ etex,Center(C1));
gddLabel.top(btex $C_{2}$ etex,Center(C2));
gddLabel.bot(btex $C_{3}$ etex,Center(C3));
draw textext("Axis of similitude") rotated (22) shifted (0.5[Pt(E23),Pt(E12)]
gddInPlace +(0,3));
Window(-10,-10,19,7);
endfig;
end.
Mots clés : géométriecerclestangenteaxesmp-geom2d
Cet exemple fait partie de la collection d’exemples Documentation de mp-geom2d.