Moka kernel
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
CTransformationMatrix Class Reference

#include <transformation-matrix.hh>

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
 

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
ATypeLe 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
AMatrixla 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&ndash;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 ( CVertex AVertex) const
Parameters
AVertexLe sommet sur lequel appliquer la transformation

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

INLINE void CTransformationMatrix::applyOn ( const CVertex AVertex,
CVertex AResult 
) const
Parameters
AVertexLe sommet sur lequel appliquer la transformation
AResultLe sommet obtenu après transformation

Definition at line 456 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
AAxeDirectionUn vecteur directeur de l'axe
ACoefLe coefficient d'homothétie

! AAxeDirection.isNull()

Definition at line 307 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
AAxeVertexUn sommet de l'axe
AAxeDirectionLe vecteur directeur de l'axe
ACoefLe coefficient d'homothétie

! AAxeDirection.isNull()

Definition at line 323 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
AMatrixUne 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 CVector CTransformationMatrix::operator* ( const CVector AVector) const

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

Parameters
AVectorUn 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)

Opérateur d'affectation

Parameters
AMatrixLa 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
ARowLa 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 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
AVector1Un premier vecteur
AVector2Un 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::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
ACenterLe sommet origine
AVector1Un premier vecteur
AVector2Un 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 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
AVectorU1Le premier vecteur du premier repère
AVectorV1Le second vecteur du premier repère
AVectorU2Le premier vecteur du deuxième repère
AVectorV2Le 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::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
APlaneNormalUn vecteur normal du plan
ACoefLe coefficient d'homothétie

! APlaneNormal.isNull()

Definition at line 339 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
APlaneVertexUn sommet du plan
APlaneNormalUn vecteur normal du plan
ACoefLe coefficient d'homothétie

! APlaneNormal.isNull()

Definition at line 355 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
AAxeDirectionLe vecteur directeur de l'axe de rotation
AAngleL'angle (en degrés) de la rotation

! AAxeDirection.isNull()

Definition at line 177 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
AAxeVertexUn sommet quelconque de l'axe de rotation
AAxeDirectionLe vecteur directeur de l'axe de rotation
AAngleL'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 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
AAnglesLes angles de rotation

Definition at line 223 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
AVertexLe vecteur directeur de l'axe de rotation

!AAxeDirection.isNull()

Definition at line 237 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
ACoefLe coefficient de l'homothétie

Definition at line 265 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
ACoefLes coefficients dans les trois dimensions de l'étirement

Definition at line 271 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
ACenterLe centre d'homothétie
ACoefLe coefficient d'homothétie

Definition at line 283 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
ACenterLe centre de l'étirement
ACoefLes coefficients dans les trois dimensions de l'étirement

Definition at line 295 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
AOrigin1L'origine du premier repère
AVectorU1Le premier vecteur du premier repère
AVectorV1Le second vecteur du premier repère
AOrigin2L'origine du second repère
AVectorU2Le premier vecteur du deuxième repère
AVectorV2Le second vecteur du deuxième repère
ACoefLes 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
AVectorLe vecteur de translation

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


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