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

Go to the source code of this file.

Functions

bool belongToSameOrientedOrbit (CDart *ADart1, CDart *ADart2, TOrbit AOrbit)
 
bool isOrientable (CDart *ADart, TOrbit AOrbit)
 
void countBorders (int AMarkNumber, int *ANb0, int *ANb1, int *ANb2, int *ANb3)
 
void countBorders (CDart *ADart, TOrbit AOrbit, int *ANb0, int *ANb1, int *ANb2, int *ANb3)
 
unsigned int countNonLocalDegreeTwoEdges ()
 
void countCells (int AMarkNumber, int *ANb0, int *ANb1, int *ANb2, int *ANb3, int *ANb4, int *ANbDarts=NULL)
 
void countCells (CDart *ADart, TOrbit AOrbit, int *ANb0, int *ANb1, int *ANb2, int *ANb3, int *ANb4, int *ANbDarts=NULL)
 
void getGlobalCharacteristics (int *ANbDarts, int *ANbVertices, int *ANbEdges, int *ANbFaces, int *ANbVolumes, int *ANbCC, int *ANb0Borders, int *ANb1Borders, int *ANb2Borders, int *ANb3Borders)
 
std::ostream & displayCharacteristics (std::ostream &AOs)
 
void getSurfaceCharacteristics (CDart *ADart, int *ANbDarts, int *ANbVertices, int *ANbEdges, int *ANbFaces, int *ANb0Borders, int *ANb1Borders, int *ANb2Borders, int *ANb2BordersWhenClosed, int *AEuler, int *AOrient, int *AGenus)
 
std::string getSurfaceName (int AB2, int AQ, int AG)
 
bool isConnex ()
 
bool checkTopology ()
 
bool checkEmbeddings (TOrbit AOrbit, int AAttributeIdentity, bool AEmbeddingMustExist=true)
 
bool isIClosedOrbit (CDart *ADart, int ADimension, TOrbit AOrbit)
 
bool isIFreeOrbit (CDart *ADart, int ADimension, TOrbit AOrbit)
 
int getMapDimension ()
 
bool isDanglingFace (CDart *ADart)
 

Function Documentation

bool belongToSameOrientedOrbit ( CDart *  ADart1,
CDart *  ADart2,
TOrbit  AOrbit 
)
Parameters
ADart1Un brin de la carte
ADart2Un brin de la carte
AOrbitUne orbite quelconque
Returns
true si ADart1 et ADart2 appartiennent à la même orbite orientée.
bool checkEmbeddings ( TOrbit  AOrbit,
int  AAttributeIdentity,
bool  AEmbeddingMustExist = true 
)

Vérifie si pour chaque cellule d'orbite AOrbit de la carte il existe un seul brin de la cellule qui possède le plongement identifié par AAttributeIdentity. Si AEmbeddingMustExist vaut 'vrai', une cellule non plongée est considérée comme un problème d'intégrité de la carte.

Parameters
AOrbitl'orbite plongée à tester
AAttributeIdentityL'identificateur de l'attribut à vérifier
AEmbeddingMustExistUn booléen indiquant si la détection d'une orbite non plongée doit provoquer une erreur
Returns
Un booléen indiquant si les plongements sont cohérents

isOrbitUsed(AOrbit);

bool checkTopology ( )

Vérifie l'intégrité de la carte. La carte est cohérente si les orbites 0, 1, 2 et 3 sont des permutations et si les orbites 02, 03 et 13 sont des involutions.

Returns
Un booléen indiquant si la topologie de la carte est cohérente
void countBorders ( int  AMarkNumber,
int *  ANb0,
int *  ANb1,
int *  ANb2,
int *  ANb3 
)

Compte le nombre de bords incidents aux brins marqués avec la marque AMarkNumber. Pour ne compter que certains bords, mettre à NULL les paramêtres ANbi correspondant à une dimension non voulue.

Parameters
AMarkNumberUn numéro de marque
ANbiLe nombre de i-bords
ANb0CoupledLe nombre de faces ayant deux 0-bords
void countBorders ( CDart *  ADart,
TOrbit  AOrbit,
int *  ANb0,
int *  ANb1,
int *  ANb2,
int *  ANb3 
)

Compte le nombre de bords incidents à l'orbite (ADart, AOrbit). Pour ne compter que certains bords, mettre à NULL les paramètres ANb- correspondant à une dimension non voulue.

Parameters
ADartUn brin de la carte
AOrbitUne orbite quelconque
ANbiLe nombre de i-bords
void countCells ( int  AMarkNumber,
int *  ANb0,
int *  ANb1,
int *  ANb2,
int *  ANb3,
int *  ANb4,
int *  ANbDarts = NULL 
)

Compte le nombre de cellules incidentes à un brin marqué avec la marque AMarkNumber. Pour ne compter que certains types de cellules, mettre à NULL les paramètres ANb- correspondant à une dimension non voulue.

Parameters
AMarkNumberUn numéro de marque
ANbiLes nombres de i-cellules
void countCells ( CDart *  ADart,
TOrbit  AOrbit,
int *  ANb0,
int *  ANb1,
int *  ANb2,
int *  ANb3,
int *  ANb4,
int *  ANbDarts = NULL 
)

Compte le nombre de cellules incidentes ou incluses dans l'orbite (ADart, AOrbit). Pour ne compter que certains types de cellules, mettre à NULL les paramètres ANb- correspondant à une dimension non voulue.

Parameters
ADartUn brin de la carte
AOrbitUne orbite quelconque
ANbiLes nombres de i-cellules
unsigned int countNonLocalDegreeTwoEdges ( )

Count the number of edges with local degree different from two. Remark: if this number is equal to zero, the map corresponds to a 2 dimensional quasi-manifols.

Returns
the number of edges with local degree different from two.
std::ostream& displayCharacteristics ( std::ostream &  AOs)

Display all the characteristics of the map (number of darts and number of cells.

void getGlobalCharacteristics ( int *  ANbDarts,
int *  ANbVertices,
int *  ANbEdges,
int *  ANbFaces,
int *  ANbVolumes,
int *  ANbCC,
int *  ANb0Borders,
int *  ANb1Borders,
int *  ANb2Borders,
int *  ANb3Borders 
)

Calcule les caractéristiques globales de la carte (nombre de brins, de cellules, de bords). Pour ne pas calculer certaines caractéristiques, mettre à NULL les paramètres correspondants.

Parameters
ANbDartsLe nombre de brins de la carte
ANb{Vertices,...,CC}Le nombre de cellules de la carte
ANbiBordersLe nombre de i-bords de la carte
int getMapDimension ( )
Returns
la dimension de la carte, c'est à dire le plus grand i tel qu'il existe un brin non i-libre. Retourne -1 si tout les brins sont libre pour tout les i.
void getSurfaceCharacteristics ( CDart *  ADart,
int *  ANbDarts,
int *  ANbVertices,
int *  ANbEdges,
int *  ANbFaces,
int *  ANb0Borders,
int *  ANb1Borders,
int *  ANb2Borders,
int *  ANb2BordersWhenClosed,
int *  AEuler,
int *  AOrient,
int *  AGenus 
)

Calcule les caractéristiques d'une surface dont un brin est donné (nombre de brins, de cellules, de bords, caractéristique d'Euler, orientabilité, genre). Pour ne pas calculer certaines caractéristiques, mettre à NULL les paramètres correspondants.

Parameters
ADartUn brin du volume
ANbDartsLe nombre de brins du volume
ANb{Vertices,...,CC}Le nombre de cellules du volume
ANbiBordersLe nombre de i-bords du volume
ANb2BordersWhenClosedLe nombre total de 2-bords qu'on aurait si le volume incident à ADart était 0-fermé puis 1-fermé.
AEulerLa caractéristique d'Euler-Poincaré du volume
AOrientLe coefficient d'orientabilité du volume
AGenusLe genre du volume
std::string getSurfaceName ( int  AB2,
int  AQ,
int  AG 
)

Détermine à partir des caractéristiques topologiques d'une surface son nom usuel.

Parameters
AB2Le nombre de 2-bords de la surface
AQLe coefficient d'orientabilité de la surface
AGLe genre de la surface
Returns
Le nom de la surface (par exemple, "tore à 2 trous", "bouteille de Klein", etc)
bool isConnex ( )

Teste si la carte ne contient qu'une seule composante connexe. Si c'est le cas, la valeur 'vrai' est retournée.

Returns
'vrai' si la carte est connexe
bool isDanglingFace ( CDart *  ADart)
Returns
true iff the face containing dart ADart is dangling.
bool isIClosedOrbit ( CDart *  ADart,
int  ADimension,
TOrbit  AOrbit 
)

Teste si tous les brins de l'orbite (ADart, AOrbit) sont cousus par alpha ADimension. Si c'est le cas, la méthode retourne vrai.

Parameters
ADartUn brin de la carte
ADimensionUne dimension quelconque (0, 1, 2 ou 3)
AOrbitUne orbite quelconque
Returns
Un booléen
bool isIFreeOrbit ( CDart *  ADart,
int  ADimension,
TOrbit  AOrbit 
)

Teste si tous les brins de l'orbite (ADart, AOrbit) sont non cousus par alpha ADimension. Si c'est le cas, la méthode retourne vrai.

Parameters
ADartUn brin de la carte
ADimensionUne dimension quelconque (0, 1, 2 ou 3)
AOrbitUne orbite quelconque
Returns
Un booléen
bool isOrientable ( CDart *  ADart,
TOrbit  AOrbit 
)

Teste si l'objet déterminé par ADart et AOrbit est orientable. Remarque: L'objet peut ne pas être orientable uniquement pour les orbites ORBIT_VERTEX, ORBIT_VOLUME et ORBIT_CC.

Parameters
ADartUn brin de la carte
AOrbitUne orbite (ORBIT_VOLUME ou ORBIT_CC)
Returns
'vrai' si l'objet est orientable

AOrbit n'est pas une orbite de bord