Moka kernel
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
gmv-geometry.hh File Reference

Go to the source code of this file.

Functions

CVertex basicBarycenter (CDart *ADart, TOrbit AOrbit, int AOrbitMark, int ATreatedMark, int ADirectInfoVertex=-1)
 
CVertex barycenter (CDart *ADart, TOrbit AOrbit, int ADirectInfoVertex=-1)
 
CVertex barycenter (int AMarkNumber)
 
CVertex directInfoBarycenter (int ADirectInfoVertex)
 
void boundingBox (int AMarkNumber, CVertex &AMin, CVertex &AMax)
 
CVertex centerOfBoundingBox (int AMarkNumber)
 
void boundingBox (CDart *ADart, TOrbit AOrbit, CVertex &AMin, CVertex &AMax)
 
CVertex centerOfBoundingBox (CDart *ADart, TOrbit AOrbit)
 
TCoordinate edgeLength (CDart *ADart)
 
TCoordinate facePerimeter (CDart *ADart)
 
TCoordinate border1Length (CDart *ADart)
 
TCoordinate border2Length (CDart *ADart)
 
CVertex edgeVector (CDart *ADart)
 
CVertex edgeNormalVector (CDart *ADart)
 
CVertex faceNormalVector (CDart *ADart)
 
CVertex cellNormalVector (int ADim, CDart *ADart)
 
CVertex border2NormalVector (CDart *ADart)
 
CVertex regionNormalVector (CDart *ADart, int ADim)
 
CVertex regionNormalVector (CDart *ADart, int ADim, int AMarkNumber)
 
CVertex cellDimensionNormalVector (CDart *ADart, int ADim)
 
TCoordinate orbitLength (CDart *ADart, TOrbit AOrbit)
 
CVertex orbitNormalVector (CDart *ADart, TOrbit AOrbit)
 

Function Documentation

CVertex barycenter ( CDart *  ADart,
TOrbit  AOrbit,
int  ADirectInfoVertex = -1 
)

Calcule le barycentre d'un ensemble de sommets déterminé par un brin ADart et une orbite AOrbit.

Si ADirectInfoVertex est positif ou nul, le plongement des sommets n'est pas recherché à l'aide de la méthode 'findVertex' mais est accédé directement à l'aide du champ directInfo[ADirectInfoVertex].

Parameters
ADartUn brin de la carte
AOrbitUne orbite quelconque
ADirectInfoVertexUn indice correspondant à un champ directInfo
CVertex barycenter ( int  AMarkNumber)

Calcule le barycentre d'un ensemble de sommets marqués avec la marque AMarkNumber.

Parameters
AMarkNumberUn numéro de marque
CVertex basicBarycenter ( CDart *  ADart,
TOrbit  AOrbit,
int  AOrbitMark,
int  ATreatedMark,
int  ADirectInfoVertex = -1 
)

Calcule le barycentre d'un ensemble de sommets déterminé par un brin ADart et une orbite AOrbit. Les brins marqués ne sont pas démarqués à la fin du parcours.

La méthode utilise un itérateur qui marque les brins avec les marques ATreatedMark et AOrbitMark et qui n'effectue pas de démarquage à la fin.

Si ADirectInfoVertex est positif ou nul, le plongement des sommets n'est pas recherché à l'aide de la méthode 'findVertex' mais est accédé directement à l'aide du champ directInfo[ADirectInfoVertex].

Parameters
ADartUn brin de la carte
AOrbitUne orbite quelconque
AOrbitMarkLe numéro de marque utilisé par l'itérateur pour le marquage des brins atteints
ATreatedMarkLe numéro de marque utilisé pour le marquage des brins déjà traités
ADirectInfoVertexUn indice correspondant à un champ directInfo

AOrbit==ORBIT012 || AOrbit==ORBIT123 || AOrbit==ORBIT0123

TCoordinate border1Length ( CDart *  ADart)

Calcule la longueur d'un 1-bord, c'est-à-dire la longueur de l'arête qui permettrait de boucher ce 1-bord.

Parameters
ADartUn brin de la carte
Returns
La longueur du 1-bord incident à ADart
TCoordinate border2Length ( CDart *  ADart)

Calcule la longueur d'une 2-bord, c'est-à-dire la somme de la longueur de toutes les arêtes qui le constituent.

Parameters
ADartUn brin de la carte
Returns
La longueur du 2-bord incident à ADart
CVertex border2NormalVector ( CDart *  ADart)

Calcule le vecteur normal d'un 2-bord. Ce vecteur n'est jamais nul. Le 2-bord n'est pas forcément plan. Il peut être ouvert. Il peut comporter moins de 3 sommets (le résultat est alors OZ).

Parameters
ADartUn brin de la carte
Returns
Le vecteur normal du 2-bord incident à ADart
void boundingBox ( int  AMarkNumber,
CVertex AMin,
CVertex AMax 
)

Calcule la boîte englobante d'un ensemble de sommets dont un brin au moins est marqué avec la marque AMarkNumber.

Parameters
AMarkNumberUn numéro de marque
AMinLe point minimum de la boîte englobante
AMaxLe point maximum de la boîte englobante
void boundingBox ( CDart *  ADart,
TOrbit  AOrbit,
CVertex AMin,
CVertex AMax 
)

Calcule la boîte englobante d'un ensemble de sommets situés sur l'orbite (ADart, AOrbit).

Parameters
ADartUn brin de la carte
AOrbitUne orbite quelconque
AMinLe point minimum de la boîte englobante
AMaxLe point maximum de la boîte englobante
CVertex cellDimensionNormalVector ( CDart *  ADart,
int  ADim 
)

Calcule la moyenne des vecteurs normaux des faces de la cellule de dimension ADim incidente à ADart. Si la cellule n'est pas orientable, le vecteur retourné est nul.

Parameters
ADartUn brin de la carte
ADimUne dimension (3 ou 4)
Returns
Un vecteur (éventuellement nul)
CVertex cellNormalVector ( int  ADim,
CDart *  ADart 
)

Calcule le vecteur normal d'une cellule en s'appuyant sur les méthodes 'edgeNormalVector' et 'faceNormalVector'.

Parameters
ADimLa dimension de la cellule (0, 1 ou 2)
ADartUn brin incident à la cellule
Returns
Le vecteur normal de la cellule
CVertex centerOfBoundingBox ( int  AMarkNumber)

Calcule la boîte englobante d'un ensemble de sommets dont un brin au moins est marqué avec la marque AMarkNumber puis retourne le centre de cette boîte englobante.

Parameters
AMarkNumberUn numéro de marque
Returns
Le centre de la boîte englobante
CVertex centerOfBoundingBox ( CDart *  ADart,
TOrbit  AOrbit 
)

Calcule la boîte englobante d'un ensemble de sommets situés sur l'orbite (ADart, AOrbit) puis retourne le centre de cette boîte englobante.

Parameters
ADartUn brin de la carte
AOrbitUne orbite quelconque
Returns
Le centre de la boîte englobante
CVertex directInfoBarycenter ( int  ADirectInfoVertex)

Calcule le barycentre d'un ensemble de sommets se trouvant dans le champ directInfo d'indice ADirectInfoVertex. Les champs directinfo doivent être initialisés avec la méthode duplicateVertexToDirectInfo.

Parameters
ADirectInfoVertexUn indice correspondant à un champ directInfo
TCoordinate edgeLength ( CDart *  ADart)

Calcule la longueur d'une arête.

Parameters
ADartUn brin de la carte
Returns
La longueur de l'arête incidente à ADart
CVertex edgeNormalVector ( CDart *  ADart)

Calcule le vecteur normal d'une arête. Ce vecteur n'est jamais nul. Si l'arête est de longueur nulle, la méthode retourne OX, sinon elle appelle 'CGeometry::getNormalVector'.

Parameters
ADartUn brin de la carte
Returns
Le vecteur normal de l'arête incidente à ADart
CVertex edgeVector ( CDart *  ADart)

Calcule * findVertex(alpha0(ADart)) - * findVertex(ADart).

Parameters
ADartUn brin de la carte
Returns
Le vecteur correpondant à l'arête incidente à ADart
CVertex faceNormalVector ( CDart *  ADart)

Calcule le vecteur normal d'une face. Ce vecteur n'est jamais nul. La face n'est pas forcément plane. Elle peut être ouverte. Elle peut comporter moins de 3 sommets (le résultat est alors OZ).

Parameters
ADartUn brin de la carte
Returns
Le vecteur normal de la face incidente à ADart
TCoordinate facePerimeter ( CDart *  ADart)

Calcule le périmètre d'une face.

Parameters
ADartUn brin de la carte
Returns
Le périmètre de la face incidente à ADart
TCoordinate orbitLength ( CDart *  ADart,
TOrbit  AOrbit 
)
protected

Calcule la longueur de la circonférence d'une orbite, c'est-à-dire la somme de la longueur de toutes les arêtes qui la constituent. Ce calcul n'alpha de sens que si AOrbit==ORBIT01 ou si AOrbit==ORBIT_BORDER1 ou si AOrbit==ORBIT_BORDER2.

Parameters
ADartUn brin de la carte
AOrbitUne orbite
Returns
La longueur de la circonférence de l'orbite
CVertex orbitNormalVector ( CDart *  ADart,
TOrbit  AOrbit 
)
protected

Calcule le vecteur normal d'une orbite. Ce calcul n'alpha de sens que si AOrbit==ORBIT01 ou si AOrbit==ORBIT_BORDER1 ou si AOrbit==ORBIT_BORDER2.

Parameters
ADartUn brin de la carte
AOrbitUne orbite
Returns
Le vecteur normal de l'orbite
CVertex regionNormalVector ( CDart *  ADart,
int  ADim 
)

Calcule la moyenne des vecteurs normaux des faces (restreintes au volume auquel appartient ADart) incidentes à la cellule de dimension ADim à laquelle ADart appartient. Les faces 3-cousues ne sont pas prises en compte dans le calcul. Le vecteur calculé peut être nul.

Parameters
ADartUn brin de la carte
ADimUne dimension (0, 1 ou 2)
Returns
La moyenne des vecteurs normaux des faces de la région donnée
CVertex regionNormalVector ( CDart *  ADart,
int  ADim,
int  AMarkNumber 
)

Calcule la moyenne des vecteurs normaux des faces incidentes à la cellule de dimension ADim à laquelle ADart appartient. Seules les faces dont un brin commun avec l'orbite (ADart, ORBIT_INF[ADart]) est marqué sont prises en compte. Le vecteur calculé peut être nul.

Parameters
ADartUn brin de la carte
ADimUne dimension (0, 1 ou 2)
AMarkNumberUn numéro de marque
Returns
La moyenne des vecteurs normaux des faces de la région donnée