Moka kernel
|
#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 () |
CTransformationMatrix & | operator= (const CTransformationMatrix &AMatrix) |
TCoordinate * | operator[] (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 |
Définit la classe permettant d'effectuer des transformations géométriques sur les objets en utilisant des matrices 4x4.
Definition at line 43 of file transformation-matrix.hh.
Types de matrices particulières.
Definition at line 55 of file transformation-matrix.hh.
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).
AType | Le type d'initialisation à effectuer (Identity par défaut) |
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.
AMatrix | la matrice à copier |
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.
A– | Les valeurs des cellules de la matrice. |
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.
ALine- | Des sommets |
Definition at line 73 of file transformation-matrix.icc.
CTransformationMatrix::~CTransformationMatrix | ( | ) |
Destructeur
Definition at line 29 of file transformation-matrix.cc.
AVertex | Le sommet sur lequel appliquer la transformation |
Definition at line 450 of file transformation-matrix.icc.
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::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.
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 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.
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 CTransformationMatrix CTransformationMatrix::operator* | ( | const CTransformationMatrix & | AMatrix | ) | const |
Calcule le produit de la matrice courante par la matrice AMatrix passée en paramètre.
AMatrix | Une matrice quelconque |
Definition at line 138 of file transformation-matrix.icc.
Calcule le produit de la matrice courante par le vecteur AVector passé en paramètre.
AVector | Un vecteur quelconque |
Definition at line 152 of file transformation-matrix.icc.
INLINE CTransformationMatrix & CTransformationMatrix::operator= | ( | const CTransformationMatrix & | AMatrix | ) |
Opérateur d'affectation
AMatrix | La matrice initiale |
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.
ARow | La ligne de la matrice à atteindre |
ARow est compris entre 0 et 3 inclus.
Definition at line 129 of file transformation-matrix.icc.
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).
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::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).
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 & | 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).
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::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.
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::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.
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::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.
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::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.
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.
Effectue trois rotations sur le repère de base (OX,OY,OZ):
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.
AAngles | Les angles de rotation |
Definition at line 223 of file transformation-matrix.icc.
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.
AVertex | Le 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.
ACoef | Le coefficient de l'homothétie |
Definition at line 265 of file transformation-matrix.icc.
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.
ACoef | Les 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.
ACenter | Le centre d'homothétie |
ACoef | Le coefficient d'homothétie |
Definition at line 283 of file transformation-matrix.icc.
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.
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::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.
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.
Modifie la matrice courante en la combinant avec la matrice correspondant à une translation de vecteur AVector.
AVector | Le vecteur de translation |
Definition at line 165 of file transformation-matrix.icc.