TRANSFORMATIONS ET PROJECTIONS 3D (11)
Liste des figures
Figure fig_pa01_160708_projection_point_plan
figure 0001
Figure fig_pa02_160708_projection_point_plan
figure 0002
Figure fig_pb01_180708_projection_path_sur_plan
figure 0003
Figure fig_pb02_180708_projection_path_sur_plan
figure 0004
Figure fig_pb03_180708_projection_path_sur_plan
figure 0005
Figure fig_ra01_160708_rotation
figure 0006
Figure fig_ra02_160708_rotation
figure 0007
Figure fig_ra03_160708_rotation
figure 0008
Figure fig_rz01_170708_rotation
figure 0009
Figure fig_ta01_200509_symetrie_plan
figure 0010
Figure fig_ta01_200509_translation
figure 0011
Asymptote - Figure 0001: fig_pa01_160708_projection_point_plan.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_pa01_160708_projection_point_plan
// Deux options d'affichage des labels en 3D : Billboard ou Embedded.
settings.autobillboard=false; // solution temporaire pour que 
// l'option d'affichage par défaut des labels ne soit plus Billboard
// (qui ne fonctionne pas pour l'instant avec obliqueX).

import three;

size(8cm,0);
currentprojection=obliqueX;
currentlight=(0,2,1);

//~~~~~~~~~ DEFINITIONS ~~~~~~~~~ 
// On définit le plan.
triple v1=(8,0,0),
       v2=(0,10,0),
       pO=(-4,-5,-1);
path3 pl1=plane(v2,v1,pO);
// On définit un vecteur donnant la direction de projection
triple V=(1,2,4);
// On définit un point pA
triple pA=(4,2,5);

// projection sur le plan pl1 suivant la direction de V
transform3 proj=planeproject(pl1,V); 

// On définit l'imagepB de pA par proj
triple pB=proj*pA;

//~~~~~~~~~ CONSTRUCTIONS ~~~~~~~~~ 
// On trace le plan.
draw(surface(pl1),paleblue+opacity(.5),blue);
// On représente le vecteur.
draw((0,0,0)--V,Arrow3);
// On place le point A
dot("A",pA,NW);
// puis son projeté B sur le plan suivant la direction du vecteur
dot("B",pB,NW);
// On relie le point A à son projeté B
draw(pA--pB,dashed);
Asymptote - Figure 0002: fig_pa02_160708_projection_point_plan.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_pa02_160708_projection_point_plan
// Deux options d'affichage des labels en 3D : Billboard ou Embedded.
settings.autobillboard=false; // solution temporaire pour que 
// l'option d'affichage par défaut des labels ne soit plus Billboard
// (qui ne fonctionne pas pour l'instant avec obliqueX).

import three;

size(8cm,0);
currentprojection=obliqueX;
currentlight=(0,2,1);

//~~~~~~~~~ DEFINITIONS ~~~~~~~~~ 
// On définit le plan.
triple v1=(8,0,0),
       v2=(0,10,0),
       pO=(-4,-5,-1);
path3 pl1=plane(v2,v1,pO);
// On définit un point pA
triple pA=(1,0,5);

// On définit la projection orthogonale sur le plan pl1 :
transform3 proj=planeproject(pl1); 
// On définit l'image pB de pA par proj :
triple pB=proj*pA;

//~~~~~~~~~ CONSTRUCTIONS ~~~~~~~~~ 
// On trace le plan.
draw(surface(pl1),paleblue+opacity(.5),blue);
// On place le point A
dot("A",pA,NW);
// puis son projeté B sur le plan suivant la direction du vecteur
dot("B",pB,NW);
// On relie le point A à son projeté B
draw(pA--pB,dashed);
Asymptote - Figure 0003: fig_pb01_180708_projection_path_sur_plan.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_pb01_180708_projection_path_sur_plan
// Deux options d'affichage des labels en 3D : Billboard ou Embedded.
settings.autobillboard=false; // solution temporaire pour que 
// l'option d'affichage par défaut des labels ne soit plus Billboard
// (qui ne fonctionne pas pour l'instant avec obliqueX).

import three;
size(8cm,0);
currentprojection=obliqueX;
currentlight=(0,2,1);

//~~~~~~~~~ DEFINITIONS ~~~~~~~~~ 
// On définit le plan.
triple v1=(10,0,0),
       v2=(0,10,0),
       pO=(-2,-3,0);
path3 pl1=plane(v1,v2,pO);
// On définit un vecteur donnant la direction de projection
triple V=(1,-1,4);
// On définit un chemin
path3 ch=(5,3,4)--(5,4,8)--(1,4,4)--(4,-2,3)--cycle;

// projection sur le plan pl1 suivant la direction de V
transform3 proj=planeproject(pl1,V); 
// et on définit le projetté de ch :
path3 chproj=proj*ch;

//~~~~~~~~~ CONSTRUCTIONS ~~~~~~~~~ 
// On trace le plan.
draw(surface(pl1),paleblue+opacity(.5),blue);
// On représente le vecteur.
draw((0,0,0)--V,Arrow3);
// On trace le chemin défini
draw(ch,blue);
// et son projeté
draw(chproj,red);

for (int i=0; i < length(ch); ++i)
  draw(point(ch,i)--point(chproj,i), .5bp+blue+dotted);
Asymptote - Figure 0004: fig_pb02_180708_projection_path_sur_plan.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_pb02_180708_projection_path_sur_plan
// Deux options d'affichage des labels en 3D : Billboard ou Embedded.
settings.autobillboard=false; // solution temporaire pour que 
// l'option d'affichage par défaut des labels ne soit plus Billboard
// (qui ne fonctionne pas pour l'instant avec obliqueX).

import three;
size(8cm,0);
currentprojection=obliqueX;
currentlight=(0,2,1);

//~~~~~~~~~ DEFINITIONS ~~~~~~~~~ 
// On définit le plan.
triple v1=(10,0,0),
       v2=(0,10,0),
       pO=(-2,-3,0);
path3 pl1=plane(v1,v2,pO);
// On définit un chemin
path3 ch=(5,3,4)..(5,4,8)..(1,4,4)..(4,-2,3)..cycle;

// On définit la projection orthogonale sur pl1 :
transform3 proj=planeproject(pl1); 
// et on définit le projetté de ch :
path3 chproj=proj*ch;

//~~~~~~~~~ CONSTRUCTIONS ~~~~~~~~~ 
// On trace le plan.
draw(surface(pl1),paleblue+opacity(.5),blue);
// On trace le chemin défini
draw(ch,blue);
// et son projeté
draw(chproj,red);

for (int i=0; i < length(ch); ++i)
  draw(point(ch,i)--point(chproj,i), .5bp+blue+dotted);
Asymptote - Figure 0005: fig_pb03_180708_projection_path_sur_plan.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_pb03_180708_projection_path_sur_plan
// Deux options d'affichage des labels en 3D : Billboard ou Embedded.
settings.autobillboard=false; // solution temporaire pour que 
// l'option d'affichage par défaut des labels ne soit plus Billboard
// (qui ne fonctionne pas pour l'instant avec obliqueX).

import three;
size(7.5cm,0);
currentprojection=orthographic(5,5,10);

//~~~~~~~~~ DEFINITIONS ~~~~~~~~~ 
// On définit le plan.
triple v1=(10,0,0),
       v2=(0,10,0),
       pO=(-2,-3,0);
path3 pl1=plane(v1,v2,pO);
// On définit un chemin
path3 ch=(5,3,4)..(5,4,8)..(1,4,4)..(4,-2,3)..cycle;

// On définit la projection orthogonale sur le plan pl1 :
transform3 proj=planeproject(pl1); 
// et on définit le projetté de ch :
path3 chproj=proj*ch;

//~~~~~~~~~ CONSTRUCTIONS ~~~~~~~~~ 
// On trace le plan.
draw(surface(pl1),paleblue+opacity(.5),blue);
// On trace le chemin défini
draw(ch,blue);
// et son projeté
draw(chproj,red);

for (int i=0; i < length(ch); ++i)
  draw(point(ch,i)--point(chproj,i), .5bp+blue+dotted);
Asymptote - Figure 0006: fig_ra01_160708_rotation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_ra01_160708_rotation
import solids;
size(7.5cm,0);

currentprojection=orthographic(3,1,2);

triple vectaxe=(0,0,1);
transform3 r=rotate(90,vectaxe);
triple pA=(1,0,1), pB=(4,0,1), pC=(1,0,4);
path3 tri=pA--pB--pC--cycle;
path3 trip=r*tri;

draw(tri^^trip);

limits(O,X+Y+Z);
xaxis3(Label("$x$",1),Arrow3);
yaxis3(Label("$y$",1),Arrow3);
zaxis3(Label("$z$",1),Arrow3);

pen dotteddash=linetype("0 4 4 4"),
    p2=.8bp+blue+dotted;
draw((0,0,-1)--(0,0,4),red+dotteddash);
draw(arc((0,0,pA.z),pA,r*pA,true),p2,Arrow3);
draw(arc((0,0,pB.z),pB,r*pB,true),p2,Arrow3);
draw(arc((0,0,pC.z),pC,r*pC,true),p2,Arrow3);
Asymptote - Figure 0007: fig_ra02_160708_rotation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_ra02_160708_rotation
import solids;
size(7.5cm,0);

currentprojection=orthographic(3,1,2);

triple vectaxe=(0,0,1);
transform3 r=rotate(270,vectaxe);
triple pA=(1,0,1), pB=(4,0,1), pC=(1,0,4);
path3 tri=pA--pB--pC--cycle;
path3 trip=r*tri;

draw(tri^^trip);

limits(O,X+Y+Z);
xaxis3(Label("$x$",1),Arrow3);
yaxis3(Label("$y$",1),Arrow3);
zaxis3(Label("$z$",1),Arrow3);

pen dotteddash=linetype("0 4 4 4"),
    p2=.8bp+blue+dotted;
draw((0,0,-1)--(0,0,4),red+dotteddash);
draw(arc((0,0,pA.z),pA,r*pA,false),p2,Arrow3);
draw(arc((0,0,pB.z),pB,r*pB,false),p2,Arrow3);
draw(arc((0,0,pC.z),pC,r*pC,false),p2,Arrow3);
Asymptote - Figure 0008: fig_ra03_160708_rotation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_ra03_160708_rotation
import solids;
size(7.5cm,0);

currentprojection=orthographic(3,1,2);

triple vectaxe=(1,0,0);
transform3 r=rotate(-90,vectaxe);
triple pA=(1,0,1), pB=(4,0,1), pC=(1,0,4);
path3 tri=pA--pB--pC--cycle;
path3 trip=r*tri;

draw(tri^^trip);

limits(O,X+Y+Z);
xaxis3(Label("$x$",1),Arrow3);
yaxis3(Label("$y$",1),Arrow3);
zaxis3(Label("$z$",1),Arrow3);

pen dotteddash=linetype("0 4 4 4"),
    p2=.8bp+blue+dotted;
draw((-1,0,0)--(4,0,0),red+dotteddash);
draw(arc((pA.x,0,0),pA,r*pA,CCW),p2,Arrow3); // CCW=true=counterclockwise
draw(arc((pB.x,0,0),pB,r*pB,CCW),p2,Arrow3); // CW=false
draw(arc((pC.x,0,0),pC,r*pC,CCW),p2,Arrow3);
Asymptote - Figure 0009: fig_rz01_170708_rotation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_rz01_170708_rotation
import bsp;
size(7.5cm,0);
settings.tex="pdflatex";

currentprojection=orthographic(10,2,5);

real alpha = 45;
triple pA=(1,0,0), pB=(4,0,3), pC=(3,0,0);
transform3 r=rotate(alpha,pB-pA);
pen dotteddash=linetype("0 4 4 4");

path3 tri=pA--pB--pC--cycle;

for (int i=0; i<360/alpha; ++i) {
    draw(surface(tri),yellow,blue);
    tri=r*tri;
}

triple centrecercleA=(pA+rotate(180,pB-pA)*pA)/2,
       centrecercleB=(pB+rotate(180,pB-pA)*pB)/2;
draw(surface(circle(centrecercleA,abs(pA-centrecercleA),pB-pA)),
         lightblue+opacity(.3),blue);
draw((0,0,0)--centrecercleB,dotteddash+blue);
draw(surface(circle(centrecercleB,abs(pB-centrecercleB),pB-pA)),
         lightblue+opacity(.3),blue);
Asymptote - Figure 0010: fig_ta01_200509_symetrie_plan.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_ta01_200509_symetrie_plan
import solids;
currentprojection=orthographic(5,3,4);

size(7.5cm);

real a=6,b=4,c=3;

draw(box(O,(a,b,c)),blue);

limits(O,X+Y+Z);
xaxis3(scale(1.5)*Label("$x$",1),green,Arrow3);
yaxis3(scale(1.5)*Label("$y$",1),green,Arrow3);
zaxis3(scale(1.5)*Label("$z$",1),green,Arrow3);

triple pA=(a,b,0), pB=(0,b,0), pC=(0,.9b,c), pM=(a,0,c);
transform3 sym=reflect(pA,pB,pC);
triple imM=sym*pM, pN=(pM+imM)/2;

draw(surface(pA--pB--(pB+pN-pA)--pN--cycle),palegray+opacity(.5));
label("$A$",pA,X);
label("$B$",pB,Y);
dot("$C$",pC,Z);
dot("$M$",pM,Z-Y,red);

dot(pN,gray);
dot("$M'$",imM,Y-Z,green);
draw(pM--imM,1bp+dashed);
Asymptote - Figure 0011: fig_ta01_200509_translation.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_ta01_200509_translation
import solids;
size(7.5cm,0);

currentprojection=orthographic(3,1,2);

triple vect=(-.5,1.5,.5);
transform3 t=shift(vect);
triple pA=(1,0,1), pB=(4,0,1), pC=(1,0,4);
path3 tri=pA--pB--pC--cycle,
      trit=t*tri,
      tritt=t*t*tri;

draw(tri,1bp+.5green);
draw(trit^^tritt);

limits(O,X+Y+Z);
xaxis3(Label("$x$",1),Arrow3);
yaxis3(Label("$y$",1),Arrow3);
zaxis3(Label("$z$",1),Arrow3);

pen p1=.8bp+blue+dotted;
draw(pA--pA+vect,p1,Arrow3);
draw(pB--pB+vect,p1,Arrow3);
draw(pC+vect--pC+2*vect,p1,Arrow3);

shipout(format="pdf", bbox(3mm,white));

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