CGeometry Class Reference

#include <geometry.hh>

List of all members.

Static Public Member Functions

static CVertex orthoProjectVertexOnLine (const CVertex &AVertex, const CVertex &ALineVertex, const CVertex &ALineDirection)
static CVertex orthoProjectVertexOnPlane (const CVertex &AVertex, const TCoordinate &AA, const TCoordinate &AB, const TCoordinate &AC, const TCoordinate &AD)
static CVertex orthoProjectVertexOnPlane (const CVertex &AVertex, const CVertex &APlaneVertex, const CVertex &APlaneNormal)
static CVertex centralHomothety (const CVertex &AVertex, const CVertex &ACenter, const TCoordinate &ACoef)
static CVertex centralHomothety (const CVertex &AVertex, const CVertex &ACenter, const CVertex &ACoef)
static CVertex axialHomothety (const CVertex &AVertex, const CVertex &ALineVertex, const CVertex &ALineDirection, const TCoordinate &ACoef)
static CVertex planarHomothety (const CVertex &AVertex, const CVertex &APlaneVertex, const CVertex &APlaneNormal, const TCoordinate &ACoef)
static TCoordinate distanceToVertex (const CVertex &AVertex, const CVertex &AOtherVertex)
static TCoordinate distanceToLine (const CVertex &AVertex, const CVertex &ALineVertex, const CVertex &ALineDirection)
static TCoordinate distanceToPlane (const CVertex &AVertex, const CVertex &APlaneVertex, const CVertex &APlaneNormal)
static CVertex getBissectrix (const CVertex &AVector1, const CVertex &AVector2, const CVertex &ANormal=ORIGIN)
static CVertex getNormalVector (const CVertex &AVector)
static CVertex getNormalVector (const CVertex &AVector1, const CVertex &AVector2)
static CVertex getNormalVector (const CVertex &AVertex1, const CVertex &AVertex2, const CVertex &AVertex3)
static CVertex getLinesIntersection (const CVertex &ALine1Vertex1, const CVertex &ALine1Vertex2, const CVertex &ALine2Vertex1, const CVertex &ALine2Vertex2)
static bool areColinear (const CVertex &AVertex1, const CVertex &AVertex2)
static TCoordinate getAngle (const CVertex &AVector1, const CVertex &AVector2, const CVertex &ANormal=ORIGIN)
static CVertex getAngles (const CVertex &AVx, const CVertex &AVz)
static int localiseVertexComparedToLine (const CVertex &AVertex, const CVertex &ALineVertex, const CVertex &ALineDirection, const CVertex &APlaneNormal)
static void getSegmentsIntersection (const CVertex &AVertexA, const CVertex &AVertexB, const CVertex &AVertexC, const CVertex &AVertexD, const CVertex &APlaneNormal, int &AIntersection1On, CVertex &AIntersection1, int &AIntersection2On, CVertex &AIntersection2)
static void getSegmentsIntersection2d (const CVertex &AVertexA, const CVertex &AVertexB, const CVertex &AVertexC, const CVertex &AVertexD, int &AIntersection1On, CVertex &AIntersection1, int &AIntersection2On, CVertex &AIntersection2)
static CVertex getRoundingNormalVector (const CVertex &AVertex1, const CVertex &AVertex2, const CVertex &AVertex3)


Detailed Description

Cette classe fournit des fonctions permettant des calculs géométriques communément utilisés.

Conventions:

alpha.b signifie produit scalaire entre alpha et b résultat: ax*bx + ay*by + az*bz

alpha*b signifie produit vectoriel entre alpha et b résultat: { ay*bz-az*by, az*bx-ax*bz, ax*by-ay*bx }

Author:
MOKA TEAM

Definition at line 47 of file geometry.hh.


Member Function Documentation

INLINE bool CGeometry::areColinear ( const CVertex AVertex1,
const CVertex AVertex2 
) [static]

Teste si deux vecteurs sont colinéaires.

Parameters:
AVector1 Un vecteur quelconque
AVector2 Un vecteur quelconque
Returns:
Un booléen indiquant si AVector1 et AVector2 sont colinéaires

Definition at line 298 of file geometry.icc.

INLINE CVertex CGeometry::axialHomothety ( const CVertex AVertex,
const CVertex ALineVertex,
const CVertex ALineDirection,
const TCoordinate ACoef 
) [static]

Calcule l'image de AVertex par l'homothétie axiale de coefficient ACoef et d'axe la droite passant par ALineVertex et de vecteur directeur ALineDirection.

Parameters:
AVertex Un sommet quelconque de l'espace
ALineVertex Un sommet de l'axe d'homothétie
ALineDirection Un vecteur directeur de l'axe d'homothétie
ACoef Le coefficient d'homothétie
Returns:
L'image de AVertex par l'homothétie donnée
! ALineDirection.isNull()

Definition at line 152 of file geometry.icc.

INLINE CVertex CGeometry::centralHomothety ( const CVertex AVertex,
const CVertex ACenter,
const CVertex ACoef 
) [static]

Calcule l'image de AVertex par l'homothétie de centre ACenter et de coefficient ACoef.

Parameters:
AVertex Un sommet quelconque de l'espace
ACenter Le centre d'homothétie
ACoef Les coefficients d'homothétie, selon les 3 dimensions
Returns:
L'image de AVertex par l'homothétie donnée

Definition at line 144 of file geometry.icc.

INLINE CVertex CGeometry::centralHomothety ( const CVertex AVertex,
const CVertex ACenter,
const TCoordinate ACoef 
) [static]

Calcule l'image de AVertex par l'homothétie de centre ACenter et de coefficient ACoef.

Parameters:
AVertex Un sommet quelconque de l'espace
ACenter Le centre d'homothétie
ACoef Le coefficient d'homothétie
Returns:
L'image de AVertex par l'homothétie donnée

Definition at line 136 of file geometry.icc.

INLINE TCoordinate CGeometry::distanceToLine ( const CVertex AVertex,
const CVertex ALineVertex,
const CVertex ALineDirection 
) [static]

Calcule la distance euclidienne du sommet AVertex à la droite de vecteur directeur ALineDirection passant par ALineVertex, c'est-à-dire la distance de AVertex à son projeté orthogonal sur cette droite.

Parameters:
AVertex Un sommet quelconque de l'espace
ALineVertex Un sommet quelconque de la droite
ALineDirection Un vecteur directeur de la droite
Returns:
La distance du sommet à la droite
! ALineDirection.isNull()

Definition at line 183 of file geometry.icc.

INLINE TCoordinate CGeometry::distanceToPlane ( const CVertex AVertex,
const CVertex APlaneVertex,
const CVertex APlaneNormal 
) [static]

Calcule la distance euclidienne du sommet AVertex au plan de vecteur normal APlaneNormal passant par APlaneVertex, c'est-à-dire la distance de AVertex à son projeté orthogonal sur ce plan.

Parameters:
AVertex Un sommet quelconque de l'espace
APlaneVertex Un sommet quelconque du plan
APlaneNormal Un vecteur normal du plan
Ka distance du sommet au plan
! APlaneNormal.isNull()

Definition at line 192 of file geometry.icc.

INLINE TCoordinate CGeometry::distanceToVertex ( const CVertex AVertex,
const CVertex AOtherVertex 
) [static]

Calcule la distance euclidienne du sommet AVertex au sommet AOtherVertex.

Parameters:
AVertex Un sommet quelconque de l'espace
AOtherVertex Un sommet quelconque de l'espace
Returns:
La distance entre les deux sommets

Definition at line 176 of file geometry.icc.

INLINE TCoordinate CGeometry::getAngle ( const CVertex AVector1,
const CVertex AVector2,
const CVertex ANormal = ORIGIN 
) [static]

Calcule l'angle entre les vecteurs AVector1 et AVector2. Le signe de l'angle est donné par le signe de la valeur de (AVector1*AVector2).ANormal.

Parameters:
AVector1 Un premier vecteur
AVector2 Un deuxième vecteur
ANormal Un vecteur normal aux deux premiers, permettant de déterminer le signe de l'angle
Returns:
Un angle

Definition at line 305 of file geometry.icc.

INLINE CVertex CGeometry::getAngles ( const CVertex AVx,
const CVertex AVz 
) [static]

Calcule les 3 angles de rotation permettant d'obtenir le repère (AVx,AVy,AVz) en trois rotations à partir du repère (OX,OY,OZ). AVy vaut AVz*AVx. Le résultat est un triplet (alpha,beta,gamma) tel que si l'on applique la méthode CTransformationMatrix::rotate(AAngles) sur le repère (OX,OY,OZ), on obtient le repère (AVx,AVy,AVz) à la norme des vecteurs près. Si les vecteurs AVx et AVz ne sont pas orthogonaux, AVx est projeté sur le plan orthogonal à AVz et passant par l'origine.

Parameters:
AVx Un premier vecteur
AVz Un deuxième vecteur
Returns:
Trois angles de rotation

Definition at line 330 of file geometry.icc.

INLINE CVertex CGeometry::getBissectrix ( const CVertex AVector1,
const CVertex AVector2,
const CVertex ANormal = ORIGIN 
) [static]

Calcule la bissectrice des vecteurs AVector1 et AVector2. Le sens de la bissectrice est déterminé par le signe de la valeur (AVector1 * AVector2).ANormal.

Parameters:
AVector1 Un premier vecteur
AVector2 Un deuxième vecteur
ANormal Un vecteur normal aux deux premiers (paramètre facultatif) permettant de déterminer le signe de l'angle.
Returns:
La bissectrice des vecteurs AVector1 et AVector2

Definition at line 201 of file geometry.icc.

INLINE CVertex CGeometry::getLinesIntersection ( const CVertex ALine1Vertex1,
const CVertex ALine1Vertex2,
const CVertex ALine2Vertex1,
const CVertex ALine2Vertex2 
) [static]

Calcule l'intersection entre deux droites. Chaque droite est donnée par deux sommets.

Le résultat est imprévisible si les deux droites ne se croisent pas.

Parameters:
ALine1Vertex1 Un premier sommet de la première droite
ALine1Vertex2 Un deuxième sommet de la première droite
ALine2Vertex1 Un premier sommet de la deuxième droite
ALine2Vertex2 Un deuximème sommet de la deuxième droite
ALine1Vertex1 != ALine1Vertex2 ALine2Vertex1 != ALine2Vertex2

Definition at line 268 of file geometry.icc.

INLINE CVertex CGeometry::getNormalVector ( const CVertex AVertex1,
const CVertex AVertex2,
const CVertex AVertex3 
) [static]

Calcule un vecteur normal aux vecteurs (AVertex1,AVertex2) et (AVertex2,AVertex3).

Definition at line 262 of file geometry.icc.

INLINE CVertex CGeometry::getNormalVector ( const CVertex AVector1,
const CVertex AVector2 
) [static]

Calcule un vecteur normal à AVector1 et AVector2 (en effectuant le produit vectoriel de AVector1 et AVector2).

L'intérêt de cette méthode est que si aucun des vecteurs n'est le vecteur nul et si les vecteurs ne sont pas colinéaires, la norme du vecteur retourné est égale à la moyenne des normes des vecteurs AVector1 et AVector2.

Parameters:
AVector1 Un vecteur quelconque
AVector2 Un vecteur quelconque
Returns:
Un vecteur normal à AVector1 et AVector2

Definition at line 244 of file geometry.icc.

INLINE CVertex CGeometry::getNormalVector ( const CVertex AVector  )  [static]

Calcule un vecteur normal à AVector, si possible se trouvant dans le plan XY.

Parameters:
AVector Un vecteur non nul
Returns:
Un vecteur normal à AVector et de même norme que celui-ci

Definition at line 228 of file geometry.icc.

INLINE CVertex CGeometry::getRoundingNormalVector ( const CVertex AVertex1,
const CVertex AVertex2,
const CVertex AVertex3 
) [static]

Parameters:
AVertex_ trois sommets A,B,C
Returns:
le projeté orthogonal du vecteur AC sur le vecteur normal au vecteur AB dans le plan ABC.

Definition at line 533 of file geometry.icc.

INLINE void CGeometry::getSegmentsIntersection ( const CVertex AVertexA,
const CVertex AVertexB,
const CVertex AVertexC,
const CVertex AVertexD,
const CVertex APlaneNormal,
int &  AIntersection1On,
CVertex AIntersection1,
int &  AIntersection2On,
CVertex AIntersection2 
) [static]

Teste si les segments AB et CD s'intersectent. Les résultats sont stockés dans les paramètres AIntersection-On. AIntersection-On peut prendre la valeur: 0 : pas d'intersection, 1 : intersection franche sur le segment AB 2 : intersection franche sur le segment CD.

Si un paramètre AIntersection-On vaut vrai, alors la méthode affecte les coordonnées du point d'intersection à AIntersection-, sinon AIntersection- n'est pas modifié.

Remarque : s'il n'y alpha qu'une seule intersection, celle-ci n'est pas forcément placée dans AIntersection1.

La méthode fonctionne dans toutes les configurations (arêtes disjointes, sécantes, se chevauchant, confondues, etc...)

Parameters:
AVertexA Un sommet quelconque
AVertexB Un sommet quelconque
AVertexC Un sommet quelconque
AVertexD Un sommet quelconque
APlaneNormal Un vecteur normal au plan des segments
ACutABSegment Un booléen indiquant si l'arête AB est coupée par l'arête CD de manière franche
AIntersectionOnAB Une référence sur un sommet où sont stockées les coordonnées du point par lequel CD coupe AB
ACutCDSegment Un booléen indiquant si l'arête CD est coupée par l'arête AB de manière franche
AIntersectionOnCD Une référence sur un sommet où sont stockées les coordonnées du point par lequel AB coupe CD
AVertexA != AVertexB AVertexC != AVertexD !APlaneNormal.isNull()

Definition at line 387 of file geometry.icc.

INLINE void CGeometry::getSegmentsIntersection2d ( const CVertex AVertexA,
const CVertex AVertexB,
const CVertex AVertexC,
const CVertex AVertexD,
int &  AIntersection1On,
CVertex AIntersection1,
int &  AIntersection2On,
CVertex AIntersection2 
) [static]

Méthode équivalente à getSegmentsIntersection, mais qui travaille dans le plan.

Definition at line 517 of file geometry.icc.

INLINE int CGeometry::localiseVertexComparedToLine ( const CVertex AVertex,
const CVertex ALineVertex,
const CVertex ALineDirection,
const CVertex APlaneNormal 
) [static]

Localise le sommet AVertex par rapport à la droite donnée. La valeur retournée vaut: -1 si le sommet est à gauche de la droite, 0 si le sommet est sur la droite, +1 si le sommet est à droite de la droite.

Remarque: Les calculs tiennent compte des erreurs d'arrondi.

Parameters:
AVertex Le sommet à localiser
ALineVertex Un sommet de la droite par rapport à laquelle localiser le sommet AVertex
ALineDirection Un vecteur directeur de la droite par rapport à laquelle localiser le sommet AVertex
APlaneNormal Un vecteur normal au plan dans lequel on travaille
Returns:
Un entier
!ALineDirection.isNull() !APlaneNormal.isNull()

Definition at line 372 of file geometry.icc.

INLINE CVertex CGeometry::orthoProjectVertexOnLine ( const CVertex AVertex,
const CVertex ALineVertex,
const CVertex ALineDirection 
) [static]

Calcule le projeté orthogonal de AVertex sur la droite de vecteur directeur ALineDirection passant par ALineVertex.

Parameters:
AVertex Un sommet quelconque de l'espace
ALineVertex Un sommet quelconque de la droite
ALineDirection Un vecteur directeur de la droite
Returns:
Le projeté de AVertex sur la droite donnée
! ADirection.isNull()

Definition at line 29 of file geometry.icc.

INLINE CVertex CGeometry::orthoProjectVertexOnPlane ( const CVertex AVertex,
const CVertex APlaneVertex,
const CVertex APlaneNormal 
) [static]

Calcule le projeté orthogonal de AVertex sur le plan de vecteur normal APlaneNormal passant par APlaneVertex.

Parameters:
AVertex Un sommet quelconque de l'espace
APlaneVertex Un sommet quelconque du plan
APlaneNormal Un vecteur normal au plan
Returns:
Le projeté de AVertex sur le plan donné
!ANormal.isNull()

Definition at line 94 of file geometry.icc.

INLINE CVertex CGeometry::orthoProjectVertexOnPlane ( const CVertex AVertex,
const TCoordinate AA,
const TCoordinate AB,
const TCoordinate AC,
const TCoordinate AD 
) [static]

Calcule le projeté orthogonal de AVertex sur le plan d'équation cartésienne AA*x + AB*y + AC*z + AD = 0.

Parameters:
AVertex Un sommet quelconque de l'espace
A? Les paramètres de l'équation cartésienne du plan
Returns:
Le projeté de AVertex sur le plan donné

Definition at line 48 of file geometry.icc.

INLINE CVertex CGeometry::planarHomothety ( const CVertex AVertex,
const CVertex APlaneVertex,
const CVertex APlaneNormal,
const TCoordinate ACoef 
) [static]

Calcule l'image de AVertex par l'homothétie planaire de coefficient ACoef selon le plan passant par APlaneVertex et ayant APlaneNormal pour vecteur normal.

Parameters:
AVertex Un sommet quelconque de l'espace
APlaneVertex Un sommet du plan d'homothétie
APlaneNormal Un vecteur normal du plan d'homothétie
ACoef Le coefficient d'homothétie
Returns:
L'image de AVertex par l'homothétie donnée
! APlaneNormal.isNull()

Definition at line 164 of file geometry.icc.


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

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