Moka kernel
|
#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) |
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 }
Definition at line 47 of file geometry.hh.
Teste si deux vecteurs sont colinéaires.
AVector1 | Un vecteur quelconque |
AVector2 | Un vecteur quelconque |
Definition at line 298 of file geometry.icc.
|
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.
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 |
! ALineDirection.isNull()
Definition at line 152 of file geometry.icc.
|
static |
Calcule l'image de AVertex par l'homothétie de centre ACenter et de coefficient ACoef.
AVertex | Un sommet quelconque de l'espace |
ACenter | Le centre d'homothétie |
ACoef | Le coefficient d'homothétie |
Definition at line 136 of file geometry.icc.
|
static |
Calcule l'image de AVertex par l'homothétie de centre ACenter et de coefficient ACoef.
AVertex | Un sommet quelconque de l'espace |
ACenter | Le centre d'homothétie |
ACoef | Les coefficients d'homothétie, selon les 3 dimensions |
Definition at line 144 of file geometry.icc.
|
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.
AVertex | Un sommet quelconque de l'espace |
ALineVertex | Un sommet quelconque de la droite |
ALineDirection | Un vecteur directeur de la droite |
! ALineDirection.isNull()
Definition at line 183 of file geometry.icc.
|
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.
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.
|
static |
Calcule la distance euclidienne du sommet AVertex au sommet AOtherVertex.
AVertex | Un sommet quelconque de l'espace |
AOtherVertex | Un sommet quelconque de l'espace |
Definition at line 176 of file geometry.icc.
|
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.
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 |
Definition at line 305 of file geometry.icc.
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.
AVx | Un premier vecteur |
AVz | Un deuxième vecteur |
Definition at line 330 of file geometry.icc.
|
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.
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. |
Definition at line 201 of file geometry.icc.
|
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.
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.
Calcule un vecteur normal à AVector, si possible se trouvant dans le plan XY.
AVector | Un vecteur non nul |
Definition at line 228 of file geometry.icc.
|
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.
AVector1 | Un vecteur quelconque |
AVector2 | Un vecteur quelconque |
Definition at line 244 of file geometry.icc.
|
static |
Calcule un vecteur normal aux vecteurs (AVertex1,AVertex2) et (AVertex2,AVertex3).
Definition at line 262 of file geometry.icc.
|
static |
AVertex_ | trois sommets A,B,C |
Definition at line 533 of file geometry.icc.
|
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...)
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.
|
static |
Méthode équivalente à getSegmentsIntersection, mais qui travaille dans le plan.
Definition at line 517 of file geometry.icc.
|
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.
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 |
!ALineDirection.isNull() !APlaneNormal.isNull()
Definition at line 372 of file geometry.icc.
|
static |
Calcule le projeté orthogonal de AVertex sur la droite de vecteur directeur ALineDirection passant par ALineVertex.
AVertex | Un sommet quelconque de l'espace |
ALineVertex | Un sommet quelconque de la droite |
ALineDirection | Un vecteur directeur de la droite |
! ADirection.isNull()
Definition at line 29 of file geometry.icc.
|
static |
Calcule le projeté orthogonal de AVertex sur le plan d'équation cartésienne AA*x + AB*y + AC*z + AD = 0.
AVertex | Un sommet quelconque de l'espace |
A? | Les paramètres de l'équation cartésienne du plan |
Definition at line 48 of file geometry.icc.
|
static |
Calcule le projeté orthogonal de AVertex sur le plan de vecteur normal APlaneNormal passant par APlaneVertex.
AVertex | Un sommet quelconque de l'espace |
APlaneVertex | Un sommet quelconque du plan |
APlaneNormal | Un vecteur normal au plan |
!ANormal.isNull()
Definition at line 94 of file geometry.icc.
|
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.
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 |
! APlaneNormal.isNull()
Definition at line 164 of file geometry.icc.