6eme 5eme 4eme 3eme
Sommaire Liens Atelier Maths Forum

Sommaire des ressources Asymptote


Asymptote :
Configurations de Thalès


Asymptote est vraiment puissant et permet de faire des figures très complexes. Pour la réalisation de figures plus classiques que l'on utilise souvent, comme les configurations de Thalès au collège, il peut être utile d'avoir un "code type", dans lequel il n'y a qu'à changer quelques valeurs, ou décommenter-commenter quelques lignes.



bases

// Thales.asy -- Configurations de Thalès
// Il faut "connaitre" un triangle (t=ABC), ainsi que le rapport de l'homothétie (k)
// Le second triangle (t2=ADE) est construit comme l'homothétique de t.

import geometry;

unitsize(1*cm); // Pour les "vraies" grandeurs
//size(7*cm);

//---------------------------------------------------------------------------------------
// A MODIFIER
real a=4,b=3,c=5,ang=0,k=-1.5; // BC,AC,AB,(vec{i},vec{AB}),rapport de l'homothétie
// Le premier point du tableau suivant est le centre de l'homothétie
string[] n={"$A$","$B$","$C$","$D$","$E$"}; // labels de t.A,t.B,t.C,t2.B=h(t.B),t2.C=h(t.C)
pair[] dl={NW,E,N,W,S}; // alignements respectifs
//---------------------------------------------------------------------------------------
// RIEN A MODIFIER ICI
triangle t=triangleabc(a,b,c,angle=ang); // Triangle "connu" !
//show(t);
triangle t2=scale(k,t.A)*t;
//show(t2);
point[] p={t.A,t.B,t.C,t2.B,t2.C};
//---------------------------------------------------------------------------------------
// ENLEVER LES LONGUEURS DES COTES NON VOULUES (REMPLACER PAR "")
show(t,LA="",LB="",LC="",La=format("$%f$",a),Lb=format("$%f$",b),Lc=format("$%f$",c));
show(t2,LA="",LB="",LC="",La=format("$%f$",length(t2.C-t2.B)),Lb=format("$%f$",length(t2.C-t2.A)),Lc=format("$%f$",length(t2.B-t2.A)));
//---------------------------------------------------------------------------------------
// AFFICHAGE DES LONGUEURS AVEC FLECHES
//distance(format("$%f$",a),t.B,t.C,rotated=true,offset=3*mm);
//distance(format("$%f$",b),t.A,t.C,rotated=true,offset=3*mm);
//distance(format("$%f$",c),t.A,t.B,rotated=true,offset=3*mm);
//distance(format("$%f$",length(t2.C-t2.B)),t2.B,t2.C,rotated=true,offset=3*mm);
//distance(format("$%f$",length(t2.C-t.A)),t.A,t2.C,rotated=true,offset=3*mm);
//distance(format("$%f$",length(t2.B-t.A)),t.A,t2.B,rotated=true,offset=3*mm);
//---------------------------------------------------------------------------------------
for(int i=0; i<5; ++i) {label(n[i],p[i],dl[i]);} // Placement des labels


thales1
// Thales.asy -- Configurations de Thalès
// Il faut "connaitre" un triangle (t=ABC), ainsi que le rapport de l'homothétie (k)
// Le second triangle (t2=ADE) est construit comme l'homothétique de t.

import geometry;

unitsize(1*cm); // Pour les "vraies" grandeurs
//size(7*cm);

//---------------------------------------------------------------------------------------
// A MODIFIER
real a=1.5,b=2.4,c=2,ang=90,k=-3/2; // BC,AC,AB,(vec{i},vec{AB}),rapport de l'homothétie
//Le premier point est le centre de l'homothétie
string[] n={"$C$","$D$","$H$","$E$","$F$"}; // labels de t.A,t.B,t.C,t2.B=h(t.B),t2.C=h(t.C)
pair[] di={W+.5*S,E,W,SW,SE}; // alignements respectifs
//---------------------------------------------------------------------------------------
// RIEN A MODIFIER ICI
triangle t=triangleabc(a,b,c,angle=ang); // Triangle "connu" !
//show(t);
triangle t2=scale(k,t.A)*t;
//show(t2);
point[] p={t.A,t.B,t.C,t2.B,t2.C};
//---------------------------------------------------------------------------------------
// ENLEVER LES LONGUEURS DES COTES NON VOULUES (REMPLACER PAR "")
show(t,LA="",LB="",LC="",La=format("$%f$",a),Lb=format("$%f$",b),Lc=format("$%f$",c));
show(t2,LA="",LB="",LC="",La=format("$%f$",length(t2.C-t2.B)),Lb=format("$%f$",length(t2.C-t2.A)),Lc=format("$%f$",length(t2.B-t2.A)));
//---------------------------------------------------------------------------------------
// AFFICHAGE DES LONGUEURS AVEC FLECHES
//distance(format("$%f$",a),t.B,t.C,rotated=true,offset=3*mm);
//distance(format("$%f$",b),t.A,t.C,rotated=true,offset=3*mm);
//distance(format("$%f$",c),t.A,t.B,rotated=true,offset=3*mm);
//distance(format("$%f$",length(t2.C-t2.B)),t2.B,t2.C,rotated=true,offset=3*mm);
//distance(format("$%f$",length(t2.C-t.A)),t.A,t2.C,rotated=true,offset=3*mm);
//distance(format("$%f$",length(t2.B-t.A)),t.A,t2.B,rotated=true,offset=3*mm);
//---------------------------------------------------------------------------------------
for(int i=0; i<5; ++i) {label(n[i],p[i],di[i]);} // Placement des labels


  thales2
// Thales.asy -- Configurations de Thalès
// Il faut "connaitre" un triangle (t=ABC), ainsi que le rapport de l'homothétie (k)
// Le second triangle (t2=ADE) est construit comme l'homothétique de t.

import geometry;

//unitsize(1*cm); // Pour les "vraies" grandeurs
size(7cm);

//---------------------------------------------------------------------------------------
// A MODIFIER
real a=4,b=3,c=5,ang=0,k=1.5; // BC,AC,AB,(vec{i},vec{AB}),rapport de l'homothétie
// Le premier point du tableau suivant est le centre de l'homothétie
string[] n={"$A$","$B$","$C$","$D$","$E$"}; // labels de t.A,t.B,t.C,t2.B=h(t.B),t2.C=h(t.C)
pair[] dl={W,SE,NW,E,N}; // alignements respectifs
//---------------------------------------------------------------------------------------
// RIEN A MODIFIER ICI
triangle t=triangleabc(a,b,c,angle=ang); // Triangle "connu" !
//show(t);
triangle t2=scale(k,t.A)*t;
//show(t2);
point[] p={t.A,t.B,t.C,t2.B,t2.C};
//---------------------------------------------------------------------------------------
// ENLEVER LES LONGUEURS DES COTES NON VOULUES (REMPLACER PAR "")
show(t,LA="",LB="",LC="",La=format("$%f$",a),Lb=format("$%f$",b),Lc=format("$%f$",c));
show(t2,LA="",LB="",LC="",La=format("$%f$",length(t2.C-t2.B)),Lb="",Lc="");
//---------------------------------------------------------------------------------------
// AFFICHAGE DES LONGUEURS AVEC FLECHES
//distance(format("$%f$",a),t.B,t.C,rotated=true,offset=3*mm);
//distance(format("$%f$",b),t.A,t.C,rotated=true,offset=3*mm);
//distance(format("$%f$",c),t.A,t.B,rotated=true,offset=3*mm);
//distance(format("$%f$",length(t2.C-t2.B)),t2.B,t2.C,rotated=true,offset=3*mm);
distance(format("$%f$",length(t2.C-t.A)),t.A,t2.C,rotated=false,offset=-7*mm,Arrows(SimpleHead));
distance(format("$%f$",length(t2.B-t.A)),t.A,t2.B,rotated=true,offset=6*mm,Arrows(SimpleHead));
//---------------------------------------------------------------------------------------
for(int i=0; i<5; ++i) {label(n[i],p[i],dl[i]);} // Placement des labels


  thales3
// Thales.asy -- Configurations de Thalès
// Il faut "connaitre" un triangle (t=ABC), ainsi que le rapport de l'homothétie (k)
// Le second triangle (t2=ADE) est construit comme l'homothétique de t.

import geometry;
usepackage("fourier","upright");
usepackage("amsmath");
unitsize(1*cm); // Pour les "vraies" grandeurs
//size(7*cm);

//---------------------------------------------------------------------------------------
// A MODIFIER
real a=4,b=3,c=5,ang=-45,k=1.5; // BC,AC,AB,(vec{i},vec{AB}),rapport de l'homothétie
// Le premier point du tableau suivant est le centre de l'homothétie
string[] n={"$A$","$B$","$C$","$D$","$E$"}; // labels de t.A,t.B,t.C,t2.B=h(t.B),t2.C=h(t.C)
pair[] dl={N+.5*E,S+.5*W,N,S,N}; // alignements respectifs
//---------------------------------------------------------------------------------------
// RIEN A MODIFIER ICI
triangle t=triangleabc(a,b,c,angle=ang); // Triangle "connu" !
//show(t);
triangle t2=scale(k,t.A)*t;
//show(t2);
point[] p={t.A,t.B,t.C,t2.B,t2.C};
triangle t3=scale(-.75,t.A)*t;
//show(t3);
//---------------------------------------------------------------------------------------
// ENLEVER LES LONGUEURS DES COTES NON VOULUES (REMPLACER PAR "")
show(t,LA="",LB="",LC="",La=format("$%f$",a),Lb=format("$%f$",b),Lc="?");
show(t2,LA="",LB="",LC="",La=format("$%f$",length(t2.C-t2.B)),Lb="",Lc="");
show(t3,LA="",LB="",LC="",La="?",Lb="$\dfrac{9}{4}$",Lc="$\dfrac{15}{4}$");
draw(t.C--t.B,.8*blue);draw(t2.C--t2.B,.8*blue);label("?",midpoint(t.C--t2.C),N);
//---------------------------------------------------------------------------------------
// AFFICHAGE DES LONGUEURS AVEC FLECHES
//distance(format("$%f$",a),t.B,t.C,rotated=true,offset=3*mm);
//distance(format("$%f$",b),t.A,t.C,rotated=true,offset=3*mm);
//distance(format("$%f$",c),t.A,t.B,rotated=true,offset=3*mm);
//distance(format("$%f$",length(t2.C-t2.B)),t2.B,t2.C,rotated=true,offset=3*mm);
//distance(format("$%f$",length(t2.C-t.A)),t.A,t2.C,rotated=true,offset=3*mm);
distance(format("$%f$",length(t2.B-t.A)),t.A,t2.B,rotated=false,offset=6*mm);
//---------------------------------------------------------------------------------------
for(int i=0; i<5; ++i) {label(n[i],p[i],dl[i]);} // Placement des labels
label("$F$",t3.B,N);label("$G$",t3.C,SW);
label("$(BC)\parallel (DE)$",(-1,-3));


Pour toute(s) question(s) :




C. Grospellier