TRANSFORMATIONS (20)
Liste des figures
Figure fig_aa00_281011_transformations_de_base
figure 0001
Figure fig_aa00_281011_transformations_supplementaires
figure 0002
Figure fig_aa01_190208_translation
figure 0003
Figure fig_aa02_190208_translation
figure 0004
Figure fig_aa03_230208_translation
figure 0005
Figure fig_aa04_230208_translation
figure 0006
Figure fig_ba01_240208_rotation
figure 0007
Figure fig_ba02_300909_rotation
figure 0008
Figure fig_ha01_250208_homothetie
figure 0009
Figure fig_ha02_290208_homothetie
figure 0010
Figure fig_hb01_290208_homothetie
figure 0011
Figure fig_pa01_190308_projection_horizontale
figure 0012
Figure fig_pa02_190308_projection_verticale
figure 0013
Figure fig_pa03_190308_projections_sur_axes
figure 0014
Figure fig_pa04_190308_projections_sur_axes
figure 0015
Figure fig_pa05_190308_projections
figure 0016
Figure fig_pa06_190308_projections
figure 0017
Figure fig_re01_301009_reflexion
figure 0018
Figure fig_sy01_310809_symetrie
figure 0019
Figure fig_xa01_301009_inversion
figure 0020
Asymptote - Figure 0001: fig_aa00_281011_transformations_de_base.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_aa00_281011_transformations_de_base
// Présentation des applications affines (de base)
// dans Asymptote.

size(8cm,10cm,IgnoreAspect);
usepackage("fourier","upright");

label(minipage("\small
                Un point $(x;y)$ est transform\'e par l'application
                affine $t=(t.x,t.y,t.xx,t.xy,t.yx,t.yy)$ en le point $(x';y')$
                tel que :\\
                $\left\{\begin{array}{l}
                        x'=t.x+t.xx\times x+t.xy\times y \\
                        y'=t.y+t.yx\times x+t.yy\times y \\
                        \end{array}\right.$",8cm),(0,4),E);

label("\bf Applications affines (pr\'ed\'efinies)",(0,1),E);
string[] t={"identity()",
            "shift(pair z)",
            "shift(real x, real, y)",
            "xscale(real x)",
            "yscale(real y)",
            "scale(real s)",
            "scale(real x, real y)",
            "slant(real s)",
            "rotate(real angle, pair z=(0,0))",
            "reflect(pair a, pair b)"
            };

for(int y=0; y<t.length; ++y) dot(t[y],(0,-y),3E);

label("\bf Libre \`a vous d'en d\'efinir d'autres ! ;-)",(0,-10),E);
Asymptote - Figure 0002: fig_aa00_281011_transformations_supplementaires.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_aa00_281011_transformations_supplementaires
// Présentation des applications affines
// ajoutées par l'extension geometry.

size(8.5cm,12cm,IgnoreAspect);
usepackage("fourier","upright");

label(minipage("\small\it
                Rappelons que l'extension geometry de Ph.Ivaldi
                introduit la possibilit\'e de travailler dans plusieurs rep\`eres
                et de nouveaux types d'objets (point, segment, line, triangle, arc, ...)
                auxquels peuvent s'appliquer 
                les applications pr\'ec\'edentes.",8.5cm),(0,4),E);

label("\bf Applications affines ajout\'ees par geometry.asy",(0,1),E);
string[] t={"scale(real k, point M)",
            "projection(point A, point B)",
            "scale({\footnotesize real k,point A,point B,point C,point D,bool safe=false})",
            "xscale(real k, point M)",
            "yscale(real k, point M)",
            "scaleO(real x)",
            "xscaleO(real x)",
            "rotateO(real angle)",
            "reflect(line l)",
            "reflect(line l1, line l2, bool safe=false)",
            "scale(real k, line l1, line l2, bool safe=false)",
            "projection(line l)",
            "projection(line l1, line l2, bool safe=false)",
            "vprojection(line l, bool safe=false)",
            "hprojection(line l, bool safe=false)"
            };
for(int y=0; y<t.length; ++y) dot(t[y],(0,-y),3E);


label("\bf Libre \`a vous d'en d\'efinir d'autres ! ;-)",(0,-15),E);
Asymptote - Figure 0003: fig_aa01_190208_translation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_aa01_190208_translation
/* Image d'un point par translation */

size(6cm,0);

// Placement de 3 points donnés
pair A=(0,0),B=(4,2),C=(1,3);
dot("$A$",A,SW);
dot("$B$",B,SE);
dot("$C$",C,NW);

// Définition de l'image C' de C
// par la translation de vecteur AB
pair imC=C+(B-A);

// Construction de C'
dot("$C'$",imC,N,red);

// Tracé des vecteurs
draw(Label("$\overrightarrow{AB}$"),A--B,N,red,Arrow);
draw(Label("$\overrightarrow{AB}$"),C--imC,N,red,Arrow);
Asymptote - Figure 0004: fig_aa02_190208_translation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_aa02_190208_translation
/* Image d'un triangle par translation */

size(7cm,0);

// Placement de 3 points donnés
pair A=(0,0),B=(3,1),C=(1,3);
dot("$A$",A,SW);
dot("$B$",B,SE);
dot("$C$",C,NW);

// Définition de la translation t de vecteur u(3;2)
transform t=shift(3,2);

// Construction des images de A, B, C par t
dot("$A'$",t*A,S,red);
dot("$B'$",t*B,NE,red);
dot("$C'$",t*C,N,red);

// Tracé des triangles ABC et A'B'C'
draw(A--B--C--cycle,1bp+blue);
draw(t*A--t*B--t*C--cycle,1bp+green);

// Tracé du vecteur de la tranlation
draw(Label("$\vec{u}$"),B--t*B,S,red,Arrow);

Asymptote - Figure 0005: fig_aa03_230208_translation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_aa03_230208_translation
/* Image d'un triangle par translation */

size(7cm,0);

// Placement de 3 points donnés
pair A=(0,0),B=(3,1),C=(1,3);

// Définition du triangle et son tracé
path tr=A--B--C--cycle;
draw(tr,dashed+blue);

// Définition de la translation t de vecteur u(3;2)
transform t=shift(3,2);

// Placement des sommets de tr et du triangle image
dot(tr,linewidth(4bp));
dot(t*tr,green+6bp);

// Tracé du vecteur de la tranlation
draw(Label("$\vec{u}$"),C--t*C,N,red,Arrow);
Asymptote - Figure 0006: fig_aa04_230208_translation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_aa04_230208_translation
/* Image d'un triangle par translation */

size(7cm,0);

// Placement de 3 points donnés
pair A=(0,0),B=(3,1),C=(1,3);

// Définition du triangle et son tracé
path tr=A--B--C--cycle;
draw(tr,dashed+blue);

// Définition de la translation t de vecteur u(3;2)
transform t=shift(3,2);

// Traxé du triangle image
draw(t*tr,green+6bp);

// Tracé du vecteur de la tranlation
draw(Label("$\vec{u}$"),C--t*C,N,red,Arrow);
draw(Label("$3\vec{\imath}$"),C--C+(3,0),S,red,Arrow);
draw(Label("$2\vec{\jmath}$"),C+(3,0)--C+(3,2),E,red,Arrow);
Asymptote - Figure 0007: fig_ba01_240208_rotation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_ba01_240208_rotation
/* Image d'un point par rotation */

size(6cm,0);
import markers;

// Placement de 2 points donnés
pair pA=(0,0),pB=(4,2);
dot("$A$",pA,SW);
dot("$B$",pB,SE);

// Définition de l'image B' de B
// par la rotation de centre A et d'angle 60°
pair imB=rotate(60,pA)*pB;
// Construction de B'
dot("$B'$",imB,N,red);
draw(pB--pA--imB,green);

markangle(scale(1.5)*"$+60^\circ$",radius=30,
           pB,pA,imB,ArcArrow(2mm),1mm+red);
Asymptote - Figure 0008: fig_ba02_300909_rotation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_ba02_300909_rotation
/* Image d'un triangle par rotation
   (avec les types et fonctions de l'extension geometry
*/
size(8cm,0);
import geometry;
import markers;
import babel; babel("frenchb"); // pour \degrees

show(currentcoordsys);
triangle tri=triangleabc(3,4,6,(3,2));
// tri=triangleabc(a=3,b=4,c=6,angle=0,A=(3,2));
// tri est un triangle ABC direct, tel que :
//                     A=(3,2), 
//                     (vec(i),vec(AB))=0,
//                     a=BC=3,b=AC=4,c=AB=6
point Om=(2,-1);
transform r=rotate(57,Om);
dot("$A$",Om,S);
draw(tri,1bp+green);
draw(r*tri,1bp+darkgreen);
draw(tri.A--Om--r*tri.A,dashed+red); // 
draw(tri.B--Om--r*tri.B,dashed+blue);
// r*tri est l'image de tri par la rotation r
// tri.A, tri.B et tri.C désignent les sommets de tri
markangle(scale(.8)*"$+57\degres$",radius=20,
           tri.A,Om,r*tri.A,ArcArrow(3bp),.5bp+red);
markangle(scale(.8)*"$+57\degres$",radius=35,
           tri.B,Om,r*tri.B,ArcArrow(3bp),.5bp+blue);              
Asymptote - Figure 0009: fig_ha01_250208_homothetie.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_ha01_250208_homothetie
/* Image d'un point par homothétie */

size(6cm,0);
// Définition d'une fonction renvoyant
// l'image d'un point M par une homothétie
pair ImageParHom(pair M, real k, pair Centre) {
  return shift(k*(M-Centre))*Centre;
}
// Placement de 3 points donnés
pair pA=(0,0),pB=(2,1),pC=(2,2);
dot("$A$",pA,SW);
dot("$B$",pB,S);
dot("$C$",pC,N);

// Définition des image B' et C' de B et C
// par l'homothétie de centre A et de rapport 1,5
pair imB=ImageParHom(pB,1.5,pA),
        imC=ImageParHom(pC,1.5,pA);
// Construction de B' et C', des segments
dot("$B'$",imB,SE,red);dot("$C'$",imC,NE,red);
draw(imB--pA--imC,green);
draw(pB--pC^^imB--imC,1bp+blue);
Asymptote - Figure 0010: fig_ha02_290208_homothetie.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_ha02_290208_homothetie
/* L'exemple précédent amélioré...
   cette fois, on définit une transformation homothétie
*/
size(6cm,0);
// Définition d'une tranformation homothétie
transform Homothetie(real k, pair centre)
{
  return shift(centre)*scale(k)*shift(-centre);
}
// Placement de 3 points donnés
pair pA=(0,0),pB=(2,1),pC=(2,2);
dot("$A$",pA,SW);
dot("$B$",pB,S);
dot("$C$",pC,N);
// Définition de h, l'homothétie de centre pA et de rapport 1.5
transform h=Homothetie(1.5,pA);
// Définition des image B' et C' de B et C par h
pair imB=h*pB, imC=h*pC;
// Construction de B' et C', des segments
dot("$B'$",imB,SE,red);dot("$C'$",imC,NE,red);
draw(imB--pA--imC,green);
draw(pB--pC^^imB--imC,1bp+blue);
Asymptote - Figure 0011: fig_hb01_290208_homothetie.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_hb01_290208_homothetie
// import geometry_dev; // extension devenue l'extension geometry officielle
import geometry;        // le 12/05/09, dans la version 1.71 d'asymptote. :-))

size(6cm,0);
// Placement de 3 points donnés
pair pA=(0,0),pB=(2,1),pC=(2,2);
dot("$A$",pA,SW);
dot("$B$",pB,S);
dot("$C$",pC,N);
// Définition de h, l'homothétie de centre pA et de rapport 1.5
transform h=scale(1.5,pA);
// Définition des image B' et C' de B et C par h
pair imB=h*pB, imC=h*pC;
// Construction de B' et C', des segments
dot("$B'$",imB,SE,red);dot("$C'$",imC,NE,red);
draw(imB--pA--imC,green);
draw(pB--pC^^imB--imC,1bp+blue);
Asymptote - Figure 0012: fig_pa01_190308_projection_horizontale.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_pa01_190308_projection_horizontale
/* Image d'un point par projection "horizontale"
   en utilisant la fonction hprojection de l'extension geometry
   Syntaxe :
                transform hprojection(line l, bool safe=false)
*/
// import geometry_dev; // extension devenue l'extension geometry officielle
import geometry;        // le 12/05/09, dans la version 1.71 d'asymptote. :-))

size(6cm,0);
show(currentcoordsys);

// Définition de 3 points donnés
point A=(2,1),B=(-1,3.5),C=(1.2,3.1);
// et de l'image C' de C par projection sur (AB)
// parallèlement à l'axe des abscisses.
pair imC=hprojection(line(A,B))*C;

// Constructions
draw(line(A,B),blue);
draw(segment(C,imC),green);
dot("$A$",A,NE); dot("$B$",B,NE);
dot("$C$",C,N); dot("$C'$",imC,SW,red);

addMargins(1cm,1cm);

Asymptote - Figure 0013: fig_pa02_190308_projection_verticale.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_pa02_190308_projection_verticale
/* Image d'un point par projection "verticale"
   en utilisant la fonction vprojection de l'extension geometry
   Syntaxe :
                transform vprojection(line l, bool safe=false)
*/
// import geometry_dev; // extension devenue l'extension geometry officielle
import geometry;        // le 12/05/09, dans la version 1.71 d'asymptote. :-))

size(6cm,0);
show(currentcoordsys);

// Définition de 3 points donnés
point A=(2,1),B=(-1,3.5),C=(1.2,3.1);
// et de l'image C' de C par projection sur (AB)
// parallèlement à l'axe des abscisses.
pair imC=vprojection(line(A,B))*C;

// Constructions
draw(line(A,B),blue);
draw(segment(C,imC),green);
dot("$A$",A,NE); dot("$B$",B,NE);
dot("$C$",C,N); dot("$C'$",imC,SW,red);

addMargins(1cm,1cm);

Asymptote - Figure 0014: fig_pa03_190308_projections_sur_axes.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_pa03_190308_projections_sur_axes
/* Projection d'un point sur les axes du repère 
   avec l'extension geometry_dev en utilisant :
   les fonctions de projection horizontale et verticale
        transform vprojection(line l, bool safe=false)
        transform vprojection(line l, bool safe=false)
   les constantes (de type line) prédéfinies :
            line Ox
        line Oy
*/
import geometry;

size(7cm,0);
show(currentcoordsys);

// Définition d'un point...
point A=(4,3);
// ... et de ses projetés sur les axes.
point xA=vprojection(Ox)*A,
      yA=hprojection(Oy)*A;
/* ATTENTION ! Cf. exemple suivant,
   pour une méthode plus courte.
*/

// Constructions
dot("$A$",A,NE);
draw(xA--A--yA,dashed+green);
dot("$x_A$",xA,S);
dot("$y_A$",yA,W);

addMargins(1cm,1cm);
Asymptote - Figure 0015: fig_pa04_190308_projections_sur_axes.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_pa04_190308_projections_sur_axes
/* La même construction que précédemment
   avec une autre méthode... plus rapide !
*/
// import geometry_dev; // extension devenue l'extension geometry officielle
import geometry;        // le 12/05/09, dans la version 1.71 d'asymptote. :-))

size(7cm,0);
show(currentcoordsys);

// Définition d'un point...
point A=(4,3);
// ... et de ses projetés sur les axes.
// en utilisant les coordonnées.
point xA=(A.x,0),
      yA=(0,A.y);

// Constructions
dot("$A$",A,NE);
draw(xA--A--yA,dashed+green);
dot("$x_A$",xA,S);
dot("$y_A$",yA,W);

addMargins(1cm,1cm);
Asymptote - Figure 0016: fig_pa05_190308_projections.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_pa05_190308_projections
/* Projections sur une droite définie par deux points A et B
a) orthogonalement
    transform projection(point A, point B)
b) parallèlement à une autre droite définie par deux points C et D
    transform projection(point A, point B, point C, point D, bool safe=false)
*/
// import geometry_dev; // extension devenue l'extension geometry officielle
import geometry;        // le 12/05/09, dans la version 1.71 d'asymptote. :-))

size(7cm,0);

// Définition de 5 points donnés
point A=(2,1),B=(-1,3.5),C=(3,1.5),D=(.5,1), M=(3,4);
// et des images de M par deux projections sur (AB).
pair imM1=projection(A,B,C,D)*M,
         imM2=projection(A,B)*M;

// Constructions
draw(line(A,B),blue);
draw(line(C,D),green);
draw(segment(M,imM1),dashed+green);
draw(segment(M,imM2),dashed+red); 
perpendicularmark(line(M,imM2),line(A,B),quarter=2);
dot("$A$",A,S); dot("$B$",B,NE);
dot("$C$",C,N); dot("$D$",D,SW);
dot("$M$",M,NE);
dot("$M_1$",imM1,SW,red);
dot("$M_2$",imM2,SW,red);

addMargins(1cm,1cm);

Asymptote - Figure 0017: fig_pa06_190308_projections.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_pa06_190308_projections
/* Projections sur une droite (objet de type line)
a) orthogonalement
    transform projection(line l)
b) parallèlement à une autre droite (objet de type line)
    transform projection(line l1, line l2, bool safe=false)
*/
// import geometry_dev; // extension devenue l'extension geometry officielle
import geometry;        // le 12/05/09, dans la version 1.71 d'asymptote. :-))

size(7cm,0);

// Définition de deux droites par leurs équations
// droite d1 d'équation x + 2y - 3 = 0
line d1=line(1,3,-3);
// droite d2 d'équation y = -2x + 3
line d2=line(-2,3);

point M=(1,2);
// Images de M par deux projections sur d1.
pair imM1=projection(d1,d2)*M,
         imM2=projection(d1)*M;

// Constructions
draw(d1,blue);
draw(d2,green);
draw(segment(M,imM1),dashed+green);
draw(segment(M,imM2),dashed+red); 
perpendicularmark(line(M,imM2),d1,quarter=2);
dot("$M$",M,NE);
dot("$M_1$",imM1,SW,red);
dot("$M_2$",imM2,SW,red);

addMargins(1cm,1cm);

Asymptote - Figure 0018: fig_re01_301009_reflexion.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_re01_301009_reflexion
import geometry;

size(7.5cm);

show(currentcoordsys);

line axe=line(-.5,2);
triangle t=triangleabc(3,8,10,(5,2)),
         imt=reflect(axe)*t; 
// tri=triangleabc(a=3,b=8,c=10,angle=0,A=(5,2));
// tri est un triangle ABC direct, tel que :
//                     A=(5,2), 
//                     (vec(i),vec(AB))=0,
//                     a=BC=3,b=AC=8,c=AB=10
                 
draw(axe,blue);

show(t);
show("$A'$","$B'$","$C'$",imt);
draw(segment(t.A,imt.A),1bp+red,StickIntervalMarker(2,1));
draw(segment(t.B,imt.B),1bp+blue,StickIntervalMarker(2,2));
draw(segment(t.C,imt.C),1bp+green,StickIntervalMarker(2,3));
perpendicularmark(line(t.A,imt.A),axe);
perpendicularmark(line(t.B,imt.B),axe);
perpendicularmark(line(t.C,imt.C),axe);

addMargins(5mm,5mm);
Asymptote - Figure 0019: fig_sy01_310809_symetrie.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_sy01_310809_symetrie
import geometry;

size(7.5cm);
line l1=line(1,0),l2=line(-.5,0);
triangle t=triangleabc(3,8,10,(5,2)),
         imt=scale(-1,l2,l1)*t; 
// tri=triangleabc(a=3,b=8,c=10,angle=0,A=(5,2));
// tri est un triangle ABC direct, tel que :
//                     A=(5,2), 
//                     (vec(i),vec(AB))=0,
//                     a=BC=3,b=AC=8,c=AB=10
                 
draw(l1,red);
draw(l2,blue);

show(t);
show("$A'$","$B'$","$C'$",imt);

draw(line(t.A,imt.A)^^line(t.B,imt.B)^^line(t.C,imt.C),dashed);

draw(segment(t.A,imt.A),1bp+red,StickIntervalMarker(2,1));
draw(segment(t.B,imt.B),1bp+blue,StickIntervalMarker(2,2));
draw(segment(t.C,imt.C),1bp+green,StickIntervalMarker(2,3));

addMargins(10mm,10mm);
Asymptote - Figure 0020: fig_xa01_301009_inversion.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_xa01_301009_inversion
/* inversion de pôle Omega=(1,1), de puissance k=2
   M' image de M, tel que vec{AM'}.vec{AM'}=k
*/
import geometry;
size(7.5cm,0);

show(currentcoordsys);
point pA=(1,1);  // pôle d'inversion
real k=2;        // puissance de l'inversion
inversion inv=inversion(pA,k);

// Deux points pour définir un segment
point pE=(3,-1), pF=(2,4); 
segment seg=segment(pE,pF);
// et une droite d'équation y=3x+2.
line dr=line(3,2);
         
// Placement du pôle
dot("$A$",pA,S);
// Construction du segment et de son image
draw(seg,1bp+green);
draw(inv*seg,1bp+red);
draw(pE--pA--pF,dashed);
// Construction de la droite et de son image
draw(dr,1bp+dashed+green);
draw(inv*dr,1bp+dashed+red);
// Un faisceau de flèches pour montrer la transformation
// de quelques points de la droite.
for(int i=0; i<15; ++i){
        point pM=point(dr,relabscissa(-.9+i*.1));
        draw(pM--inv*pM,Arrow);
}
addMargins(5mm,5mm);

Dernière modification le Fri Oct 28 12:59:38 CEST 2011 par G.Marris       Valide XHTML