]> Matrices de transformations 3D
GLam Collection version 0.3x -  ACCUEIL -  CLASSES -  HIERARCHIE -  MEMBRES -  EXEMPLES


Matrices de transformations 3D

Repère 0XYZ, objet de dimensions W (width), H (height), T ( thickness )

Coordonnées homogènes ⇒ matrice 4 x 4

Convention d'identification des coefficients : m( row , column )

Matrice identité

x ' y ' z ' 1   =   1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1   .   x y z 1       ⇒      x ' = x    y ' = y    z ' = z

Ressources XamMatrix :
  • XamMatrix() ; // constructeur par défaut
  • void toIdentity() ;

Matrices de translation

x ' y ' z ' 1   =   1 0 0 Tx 0 1 0 Ty 0 0 1 Tz 0 0 0 1   .   x y z 1       ⇒      x ' = x + Tx    y ' = y + Ty    z ' = z + Tz

Ressources XamMatrix :
  • void toTranslate(const XamPoint& point ) ;
  • void toTranslate(double tx, double ty, double tz = 0.0 ) ;
  • double m(int row, int column ) ; // accès direct aux coefficients

Matrices de rotation

Matrice de rotation autour de l'axe OX (angle θ en radians) :

x ' y ' z ' 1   =   1 0 0 0 0 cos(θ) -sin(θ) 0 0 sin(θ) cos(θ) 0 0 0 0 1   .   x y z 1       ⇒      x ' = x    y ' = y  .  cos(θ) - z  .  sin(θ)    z ' = z  .  cos(θ) + y  .  sin(θ)

Ressources XamMatrix :
  • void toRotateX(double angle ) ; // angle en degrés

Matrice de rotation autour de l'axe OY (angle θ en radians) :

x ' y ' z ' 1   =   cos(θ) 0 sin(θ) 0 0 1 0 0 -sin(θ) 0 cos(θ) 0 0 0 0 1   .   x y z 1       ⇒      x ' = x  .  cos(θ) + z  .  sin(θ)    y ' = y    z ' = z  .  cos(θ) - x  .  sin(θ)

Ressources XamMatrix :
  • void toRotateY(double angle ) ; // angle en degrés

Matrice de rotation autour de l'axe OZ (angle θ en radians) :

x ' y ' z ' 1   =   cos(θ) -sin(θ) 0 0 sin(θ) cos(θ) 0 0 0 0 1 0 0 0 0 1   .   x y z 1       ⇒      x ' = x  .  cos(θ) - y  .  sin(θ)    y ' = y  .  cos(θ) + x  .  sin(θ)    z ' = z

Ressources XamMatrix :
  • void toRotateZ(double angle ) ; // angle en degrés

Matrice de rotation d'angle θ (radians) autour d'un vecteur unitaire U     u X , u Y , u Z   :

x ' y ' z ' 1   =   u X 2 .(1-cosθ)+cosθ   u X . u Y .(1-cosθ) - u Z . sinθ   u X . u Z .(1-cosθ) + u Y . sinθ   0 u X . u Y .(1-cosθ) + u Z . sinθ   u Y 2 .(1-cosθ)+cosθ   u Y . u Z .(1-cosθ) - u X . sinθ   0 u X . u Z .(1-cosθ) - u Y . sinθ   u Y . u Z .(1-cosθ) + u X . sinθ   u Z 2 .(1-cosθ)+cosθ   0 0   0   0   1   .   x y z 1

Ressources XamMatrix :
  • void toRotate(double angle, const XamVector& v ) ; // angle en degrés, v quelconque

Matrices de changement d'échelle

x ' y ' z ' 1   =   Sx 0 0 0 0 Sy 0 0 0 0 Sz 0 0 0 0 1   .   x y z 1       ⇒      x ' = Sx . x    y ' = Sy . y    z ' = Sz . z

Ressources XamMatrix :
  • void toScale(double scale ) ; // sx = sy = sz = scale
  • void toScale(double sx, double sy, double sz ) ;
  • double m(int row, int column ) ; // accès direct aux coefficients

Matrices de réflexion

Symétries par rapport aux axes, plans et origine du repère.

m(0,0) m(1,1) m(2,2)
-1 1 1 symétrie par rapport au plan 0YZ
1 -1 1 symétrie par rapport au plan 0XZ
1 1 -1 symétrie par rapport au plan 0XY
-1 -1 1 symétrie par rapport à l'axe 0Z
-1 1 -1 symétrie par rapport à l'axe 0Y
1 -1 -1 symétrie par rapport à l'axe 0X
-1 -1 -1 symétrie par rapport à l'origine 0
Ressources XamMatrix :
  • void toScale(double sx, double sy, double sz ) ;
  • double m(int row, int column ) ; // accès direct aux coefficients

Matrices de glissement (cisaillement)

Matrice de glissement parallèle à l'axe OX :

x ' y ' z ' 1   =   1 XH XT 0 0 1 0 0 0 0 1 0 0 0 0 1   .   x y z 1       ⇒      x ' = x + XH . y + XT . z    y ' = y    z ' = z


Matrice de glissement parallèle à l'axe OY :

x ' y ' z ' 1   =   1 0 0 0 YW 1 YT 0 0 0 1 0 0 0 0 1   .   x y z 1       ⇒      x ' = x    y ' = y + YW . x + YT . z    z ' = z


Matrice de glissement parallèle à l'axe OZ :

x ' y ' z ' 1   =   1 0 0 0 0 1 0 0 ZW ZH 1 0 0 0 0 1   .   x y z 1       ⇒      x ' = x    y ' = y    z ' = z + ZW . x + ZH . y

Ressources XamMatrix :
  • double m(int row, int column ) ; // accès direct aux coefficients

GLam Collection - (c) 2009-2010 Alain Menu