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

#include <geometry.hh>

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
AVector1Un vecteur quelconque
AVector2Un 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
AVertexUn sommet quelconque de l'espace
ALineVertexUn sommet de l'axe d'homothétie
ALineDirectionUn vecteur directeur de l'axe d'homothétie
ACoefLe 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 TCoordinate ACoef 
)
static

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

Parameters
AVertexUn sommet quelconque de l'espace
ACenterLe centre d'homothétie
ACoefLe coefficient d'homothétie
Returns
L'image de AVertex par l'homothétie donnée

Definition at line 136 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
AVertexUn sommet quelconque de l'espace
ACenterLe centre d'homothétie
ACoefLes 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 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
AVertexUn sommet quelconque de l'espace
ALineVertexUn sommet quelconque de la droite
ALineDirectionUn 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
AVertexUn sommet quelconque de l'espace
APlaneVertexUn sommet quelconque du plan
APlaneNormalUn vecteur normal du plan
Kadistance 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
AVertexUn sommet quelconque de l'espace
AOtherVertexUn 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
AVector1Un premier vecteur
AVector2Un deuxième vecteur
ANormalUn 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
AVxUn premier vecteur
AVzUn 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
AVector1Un premier vecteur
AVector2Un deuxième vecteur
ANormalUn 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
ALine1Vertex1Un premier sommet de la première droite
ALine1Vertex2Un deuxième sommet de la première droite
ALine2Vertex1Un premier sommet de la deuxième droite
ALine2Vertex2Un 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 AVector)
static

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

Parameters
AVectorUn 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::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
AVector1Un vecteur quelconque
AVector2Un vecteur quelconque
Returns
Un vecteur normal à AVector1 et AVector2

Definition at line 244 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::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
AVertexAUn sommet quelconque
AVertexBUn sommet quelconque
AVertexCUn sommet quelconque
AVertexDUn sommet quelconque
APlaneNormalUn vecteur normal au plan des segments
ACutABSegmentUn booléen indiquant si l'arête AB est coupée par l'arête CD de manière franche
AIntersectionOnABUne référence sur un sommet où sont stockées les coordonnées du point par lequel CD coupe AB
ACutCDSegmentUn booléen indiquant si l'arête CD est coupée par l'arête AB de manière franche
AIntersectionOnCDUne 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
AVertexLe sommet à localiser
ALineVertexUn sommet de la droite par rapport à laquelle localiser le sommet AVertex
ALineDirectionUn vecteur directeur de la droite par rapport à laquelle localiser le sommet AVertex
APlaneNormalUn 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
AVertexUn sommet quelconque de l'espace
ALineVertexUn sommet quelconque de la droite
ALineDirectionUn 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 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
AVertexUn 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::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
AVertexUn sommet quelconque de l'espace
APlaneVertexUn sommet quelconque du plan
APlaneNormalUn 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::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
AVertexUn sommet quelconque de l'espace
APlaneVertexUn sommet du plan d'homothétie
APlaneNormalUn vecteur normal du plan d'homothétie
ACoefLe 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: