CTransformationMatrix Class Reference

#include <transformation-matrix.hh>

List of all members.

Public Types

enum  TMatrixType { NullMatrix, IdentityMatrix, AnyMatrix }

Public Member Functions

 CTransformationMatrix (TMatrixType AType=IdentityMatrix)
 CTransformationMatrix (const CTransformationMatrix &AMatrix)
 CTransformationMatrix (TCoordinate A00, TCoordinate A01, TCoordinate A02, TCoordinate A03, TCoordinate A10, TCoordinate A11, TCoordinate A12, TCoordinate A13, TCoordinate A20, TCoordinate A21, TCoordinate A22, TCoordinate A23, TCoordinate A30, TCoordinate A31, TCoordinate A32, TCoordinate A33)
 CTransformationMatrix (const CVertex &ALine1, const CVertex &ALine2, const CVertex &ALine3)
 ~CTransformationMatrix ()
void setToNull ()
void setToIdentity ()
CTransformationMatrixoperator= (const CTransformationMatrix &AMatrix)
TCoordinateoperator[] (int ARow) const
CTransformationMatrix operator* (const CTransformationMatrix &AMatrix) const
CVector operator* (const CVector &AVector) const
void translate (const CVertex &AVector)
void rotate (const CVertex &AAxeDirection, TCoordinate AAngle)
void rotate (const CVertex &AAxeVertex, const CVertex &AAxeDirection, TCoordinate AAngle)
void rotate (const CVertex &AAngles)
void rotate180 (const CVertex &AAxeDirection)
void scale (TCoordinate ACoef)
void scale (const CVertex &ACoef)
void scale (const CVertex &ACenter, TCoordinate ACoef)
void scale (const CVertex &ACenter, const CVertex &ACoef)
void axialScale (const CVertex &AAxeDirection, TCoordinate ACoef)
void axialScale (const CVertex &AAxeVertex, const CVertex &AAxeDirection, TCoordinate ACoef)
void planarScale (const CVertex &APlaneNormal, TCoordinate ACoef)
void planarScale (const CVertex &APlaneVertex, const CVertex &APlaneNormal, TCoordinate ACoef)
void orientate (const CVertex &AVector1, const CVertex &AVector2)
void orientate (const CVertex &ACenter, const CVertex &AVector1, const CVertex &AVector2)
void orientate (const CVertex &AVectorU1, const CVertex &AVectorV1, const CVertex &AVectorU2, const CVertex &AVectorV2)
void transform (const CVertex &AOrigin1, const CVertex &AVectorU1, const CVertex &AVectorV1, const CVertex &AOrigin2, const CVertex &AVectorU2, const CVertex &AVectorV2, const CVertex &ACoef=CVertex(1, 1, 1))
void applyOn (CVertex &AVertex) const
void applyOn (const CVertex &AVertex, CVertex &AResult) const

Private Attributes

TCoordinate FElements [4][4]


Detailed Description

Définit la classe permettant d'effectuer des transformations géométriques sur les objets en utilisant des matrices 4x4.

Author:
MOKA TEAM

Definition at line 43 of file transformation-matrix.hh.


Member Enumeration Documentation

Types de matrices particulières.

Enumerator:
NullMatrix 
IdentityMatrix 
AnyMatrix 

Definition at line 55 of file transformation-matrix.hh.


Constructor & Destructor Documentation

INLINE CTransformationMatrix::CTransformationMatrix ( TMatrixType  AType = IdentityMatrix  ) 

Constructeur par défaut Construction d'une nouvelle instance de la classe, initialisée à la matrice identité (voir la méthode setToIdentity).

Parameters:
AType Le type d'initialisation à effectuer (Identity par défaut)
Returns:
Une nouvelle instance de la classe

Definition at line 32 of file transformation-matrix.icc.

INLINE CTransformationMatrix::CTransformationMatrix ( const CTransformationMatrix AMatrix  ) 

Constructeur par copie Construction d'une nouvelle instance de la classe, en copiant la matrice passée en paramètre.

Parameters:
AMatrix la matrice à copier
Returns:
Une nouvelle instance de la classe

Definition at line 44 of file transformation-matrix.icc.

INLINE CTransformationMatrix::CTransformationMatrix ( TCoordinate  A00,
TCoordinate  A01,
TCoordinate  A02,
TCoordinate  A03,
TCoordinate  A10,
TCoordinate  A11,
TCoordinate  A12,
TCoordinate  A13,
TCoordinate  A20,
TCoordinate  A21,
TCoordinate  A22,
TCoordinate  A23,
TCoordinate  A30,
TCoordinate  A31,
TCoordinate  A32,
TCoordinate  A33 
)

Constructeur avec initialisation Construction d'une nouvelle instance de la classe, avec initialisation explicite.

Parameters:
A-- Les valeurs des cellules de la matrice.
Returns:
Une nouvelle instance de la classe

Definition at line 50 of file transformation-matrix.icc.

INLINE CTransformationMatrix::CTransformationMatrix ( const CVertex ALine1,
const CVertex ALine2,
const CVertex ALine3 
)

Constructeur avec initialisation à partir de sommets Construction d'une nouvelle instance de la classe, avec initialisation. Les coordonnées du sommet ALine1 sont placées sur la première ligne, celles de ALine2 sur la deuxième ligne et celles de ALine3 sur la troisième ligne. La dernière ligne et la dernière colonne de la matrice sont initialisées avec la valeur 0.

Parameters:
ALine- Des sommets
Returns:
Une nouvelle instance de la classe

Definition at line 73 of file transformation-matrix.icc.

CTransformationMatrix::~CTransformationMatrix (  ) 

Destructeur

Definition at line 29 of file transformation-matrix.cc.


Member Function Documentation

INLINE void CTransformationMatrix::applyOn ( const CVertex AVertex,
CVertex AResult 
) const

Parameters:
AVertex Le sommet sur lequel appliquer la transformation
AResult Le sommet obtenu après transformation

Definition at line 456 of file transformation-matrix.icc.

INLINE void CTransformationMatrix::applyOn ( CVertex AVertex  )  const

Parameters:
AVertex Le sommet sur lequel appliquer la transformation

Definition at line 450 of file transformation-matrix.icc.

INLINE void CTransformationMatrix::axialScale ( const CVertex AAxeVertex,
const CVertex AAxeDirection,
TCoordinate  ACoef 
)

Modifie la matrice courante en la combinant avec la matrice correspondant à une homothétie d'axe la droite de vecteur directeur AAxeDirection passant par le sommet AAxeVertex et de coefficient ACoef.

Parameters:
AAxeVertex Un sommet de l'axe
AAxeDirection Le vecteur directeur de l'axe
ACoef Le coefficient d'homothétie
! AAxeDirection.isNull()

Definition at line 323 of file transformation-matrix.icc.

INLINE void CTransformationMatrix::axialScale ( const CVertex AAxeDirection,
TCoordinate  ACoef 
)

Modifie la matrice courante en la combinant avec la matrice correspondant à une homothétie d'axe la droite de vecteur directeur AAxeDirection passant par l'origine et de coefficient ACoef.

Parameters:
AAxeDirection Un vecteur directeur de l'axe
ACoef Le coefficient d'homothétie
! AAxeDirection.isNull()

Definition at line 307 of file transformation-matrix.icc.

INLINE CVector CTransformationMatrix::operator* ( const CVector AVector  )  const

Calcule le produit de la matrice courante par le vecteur AVector passé en paramètre.

Parameters:
AVector Un vecteur quelconque
Returns:
Le résultat du produit de la matrice courante par le vecteur AVector

Definition at line 152 of file transformation-matrix.icc.

INLINE CTransformationMatrix CTransformationMatrix::operator* ( const CTransformationMatrix AMatrix  )  const

Calcule le produit de la matrice courante par la matrice AMatrix passée en paramètre.

Parameters:
AMatrix Une matrice quelconque
Returns:
Le résultat du produit de la matrice courante par la matrice AMatrix

Definition at line 138 of file transformation-matrix.icc.

INLINE CTransformationMatrix & CTransformationMatrix::operator= ( const CTransformationMatrix AMatrix  ) 

Opérateur d'affectation

Parameters:
AMatrix La matrice initiale
Returns:
La matrice courante obtenue après affectation

Definition at line 116 of file transformation-matrix.icc.

INLINE TCoordinate * CTransformationMatrix::operator[] ( int  ARow  )  const

Permet d'accéder (en lecture et en écriture) à une ligne de la matrice.

Parameters:
ARow La ligne de la matrice à atteindre
ARow est compris entre 0 et 3 inclus.

Definition at line 129 of file transformation-matrix.icc.

INLINE void CTransformationMatrix::orientate ( const CVertex AVectorU1,
const CVertex AVectorV1,
const CVertex AVectorU2,
const CVertex AVectorV2 
)

Modifie la matrice courante en la combinant avec la matrice correspondant à une ou plusieurs rotations qui correspondent au changement de repère (AVectorU1, AVectorV1) vers (AVectorU2, AVectorV2).

Si les vecteurs AVectorUi et AVectorVi ne sont pas orthogonaux, AVectorVi est projeté sur le plan orthogonal à AVectorUi et passant par l'origine. Le troisième vecteur de chaque repère est déterminé par produit vectoriel des deux premiers.

La taille des vecteurs n'est pas prise en compte (pas d'étirement).

Parameters:
AVectorU1 Le premier vecteur du premier repère
AVectorV1 Le second vecteur du premier repère
AVectorU2 Le premier vecteur du deuxième repère
AVectorV2 Le second vecteur du deuxième repère
Aucun des vecteurs passés en paramètre n'est le vecteur nul.

Definition at line 401 of file transformation-matrix.icc.

INLINE void CTransformationMatrix::orientate ( const CVertex ACenter,
const CVertex AVector1,
const CVertex AVector2 
)

Modifie la matrice courante en la combinant avec la matrice correspondant à une rotation autour du sommet ACenter qui projette AVector1 sur AVector2. L'axe de la rotation est donné par le vecteur AVector1*AVector2.

La taille des vecteurs n'est pas prise en compte (pas d'étirement).

Parameters:
ACenter Le sommet origine
AVector1 Un premier vecteur
AVector2 Un second vecteur
Aucun des vecteurs passés en paramètre n'est le vecteur nul.

Definition at line 391 of file transformation-matrix.icc.

INLINE void CTransformationMatrix::orientate ( const CVertex AVector1,
const CVertex AVector2 
)

Modifie la matrice courante en la combinant avec la matrice correspondant à une rotation qui projette AVector1 sur AVector2. L'axe de la rotation est donné par le vecteur AVector1*AVector2.

La taille des vecteurs n'est pas prise en compte (pas d'étirement).

Parameters:
AVector1 Un premier vecteur
AVector2 Un second vecteur
Aucun des vecteurs passés en paramètre n'est le vecteur nul.

Definition at line 371 of file transformation-matrix.icc.

INLINE void CTransformationMatrix::planarScale ( const CVertex APlaneVertex,
const CVertex APlaneNormal,
TCoordinate  ACoef 
)

Modifie la matrice courante en la combinant avec la matrice correspondant à une homothétie selon le plan de vecteur normal APlaneNormal passant par le sommet APlaneVertex et de coefficient ACoef.

Parameters:
APlaneVertex Un sommet du plan
APlaneNormal Un vecteur normal du plan
ACoef Le coefficient d'homothétie
! APlaneNormal.isNull()

Definition at line 355 of file transformation-matrix.icc.

INLINE void CTransformationMatrix::planarScale ( const CVertex APlaneNormal,
TCoordinate  ACoef 
)

Modifie la matrice courante en la combinant avec la matrice correspondant à une homothétie selon le plan de vecteur normal APlaneNormal passant par l'origine et de coefficient ACoef.

Parameters:
APlaneNormal Un vecteur normal du plan
ACoef Le coefficient d'homothétie
! APlaneNormal.isNull()

Definition at line 339 of file transformation-matrix.icc.

INLINE void CTransformationMatrix::rotate ( const CVertex AAngles  ) 

Effectue trois rotations sur le repère de base (OX,OY,OZ):

  • la première autour de l'axe OX et d'angle AAngles.getX(),
  • la deuxième autour de l'axe OY et d'angle AAngles.getY(),
  • la troisième autour de l'axe OZ et d'angle AAngles.getZ().

Remarque: les rotations sont faites autour des axes du repère local. La deuxième rotation se fait donc autour de l'axe OY qui alpha été modifié par la première rotation. La troisième rotation se fait autour de l'axe OZ qui alpha été modifié par les deux premières rotations.

Parameters:
AAngles Les angles de rotation

Definition at line 223 of file transformation-matrix.icc.

INLINE void CTransformationMatrix::rotate ( const CVertex AAxeVertex,
const CVertex AAxeDirection,
TCoordinate  AAngle 
)

Modifie la matrice courante en la combinant avec la matrice correspondant à une rotation de AAngle degrés autour de l'axe passant par le sommet AAxeVertex et dont le vecteur directeur est donné par le paramètre AAxeDirection.

Parameters:
AAxeVertex Un sommet quelconque de l'axe de rotation
AAxeDirection Le vecteur directeur de l'axe de rotation
AAngle L'angle (en degrés) de la rotation
AAxe n'est pas un vecteur nul.

Definition at line 213 of file transformation-matrix.icc.

INLINE void CTransformationMatrix::rotate ( const CVertex AAxeDirection,
TCoordinate  AAngle 
)

Modifie la matrice courante en la combinant avec la matrice correspondant à une rotation de AAngle degrés autour de l'axe passant par l'origine et dont le vecteur directeur est donné par le paramètre AAxeDirection.

Parameters:
AAxeDirection Le vecteur directeur de l'axe de rotation
AAngle L'angle (en degrés) de la rotation
! AAxeDirection.isNull()

Definition at line 177 of file transformation-matrix.icc.

INLINE void CTransformationMatrix::rotate180 ( const CVertex AAxeDirection  ) 

Modifie la matrice courante en la combinant avec la matrice correspondant à une rotation de 180 degrés autour de l'axe passant par l'origine et dont le vecteur directeur est donné par le paramètre AAxeDirection.

Parameters:
AVertex Le vecteur directeur de l'axe de rotation
!AAxeDirection.isNull()

Definition at line 237 of file transformation-matrix.icc.

INLINE void CTransformationMatrix::scale ( const CVertex ACenter,
const CVertex ACoef 
)

Modifie la matrice courante en la combinant avec la matrice correspondant à une opération d'étirement de center ACenter et dont les coefficients sont donnés par le paramètre ACoef.

Parameters:
ACenter Le centre de l'étirement
ACoef Les coefficients dans les trois dimensions de l'étirement

Definition at line 295 of file transformation-matrix.icc.

INLINE void CTransformationMatrix::scale ( const CVertex ACenter,
TCoordinate  ACoef 
)

Modifie la matrice courante en la combinant avec la matrice correspondant à une homothétie de centre ACenter et de coefficient ACoef.

Parameters:
ACenter Le centre d'homothétie
ACoef Le coefficient d'homothétie

Definition at line 283 of file transformation-matrix.icc.

INLINE void CTransformationMatrix::scale ( const CVertex ACoef  ) 

Modifie la matrice courante en la combinant avec la matrice correspondant à une opération d'étirement dont les coefficients sont donnés par le paramètre ACoef.

Parameters:
ACoef Les coefficients dans les trois dimensions de l'étirement

Definition at line 271 of file transformation-matrix.icc.

INLINE void CTransformationMatrix::scale ( TCoordinate  ACoef  ) 

Modifie la matrice courante en la combinant avec la matrice correspondant à une homothétie centrée sur l'origine dont le coefficient est donné par le paramètre ACoef.

Parameters:
ACoef Le coefficient de l'homothétie

Definition at line 265 of file transformation-matrix.icc.

INLINE void CTransformationMatrix::setToIdentity (  ) 

Réinitialise l'instance à la matrice identité. La matrice identité est composée de 1 sur sa première diagonale et de 0 partout ailleurs: [1 0 0 0] [0 1 0 0] [0 0 1 0] [0 0 0 1]

Definition at line 107 of file transformation-matrix.icc.

INLINE void CTransformationMatrix::setToNull (  ) 

Réinitialise l'instance à la matrice nulle. La matrice nulle est composée uniquement de 0: [0 0 0 0] [0 0 0 0] [0 0 0 0] [0 0 0 0]

Definition at line 99 of file transformation-matrix.icc.

INLINE void CTransformationMatrix::transform ( const CVertex AOrigin1,
const CVertex AVectorU1,
const CVertex AVectorV1,
const CVertex AOrigin2,
const CVertex AVectorU2,
const CVertex AVectorV2,
const CVertex ACoef = CVertex(1,1,1) 
)

Modifie la matrice courante en la combinant avec la matrice correspondant à un changement de repère.

Parameters:
AOrigin1 L'origine du premier repère
AVectorU1 Le premier vecteur du premier repère
AVectorV1 Le second vecteur du premier repère
AOrigin2 L'origine du second repère
AVectorU2 Le premier vecteur du deuxième repère
AVectorV2 Le second vecteur du deuxième repère
ACoef Les coefficients d'étirement dans les 3 dimensions
Aucun des vecteurs passés en paramètre n'est le vecteur nul.

Definition at line 429 of file transformation-matrix.icc.

INLINE void CTransformationMatrix::translate ( const CVertex AVector  ) 

Modifie la matrice courante en la combinant avec la matrice correspondant à une translation de vecteur AVector.

Parameters:
AVector Le vecteur de translation

Definition at line 165 of file transformation-matrix.icc.


Member Data Documentation

Definition at line 46 of file transformation-matrix.hh.


The documentation for this class was generated from the following files:

Generated on Tue Jul 7 15:20:27 2009 for Moka gmapkernel by  doxygen 1.5.8