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

Go to the source code of this file.

Functions

virtual CDart * insertVertex (CDart *ADart)
 
int insertVertexOnMarkedEdges (int AMarkNumber)
 
virtual CDart * insertEdge (CDart *ADart1, CDart *ADart2)
 
int insertEdgeOnMarkedFaces (int AMarkNumber, bool ANoCrossedFace=false, bool ANoTwoEdgesFace=false)
 
bool canInsertFace (CDart *ADart, int AMarkNumber, bool ANoCrossedVolume=false, bool ANoTwoEdgesFace=false, bool ANoTwoFacesVolume=false)
 
virtual CDart * insertFace (CDart *ADart, int AMarkNumber, bool ANoCrossedVolume=false)
 
int insertFaceOnMarkedVolumes (int AMarkNumber, bool ANoCrossedVolume=false, bool ANoTwoEdgesFace=false, bool ANoTwoFacesVolume=false)
 
bool turnAroundVertex (CDart *ADart, bool ANoCrossedVolume, int AMarkNumber, CDart *&ANext, bool &ACrossed)
 

Function Documentation

bool canInsertFace ( CDart *  ADart,
int  AMarkNumber,
bool  ANoCrossedVolume = false,
bool  ANoTwoEdgesFace = false,
bool  ANoTwoFacesVolume = false 
)

Teste s'il est possible d'insérer une face topologique dans un volume. Si ANoCrossedVolume est vrai, au moins un brin de chaque demi-arête du volume (orbite 0) correspondant à la face à créer doit être sélectionné. Si ANoCrossedVolume est faux, au moins un brin de chaque arête du volume (orbite 02) correspondant à la face à créer doit être sélectionné.

Parameters
ADartUn brin marqué du volume dans lequel insérer la face
AMarkNumberUn numéro de marque
ANoCrossedVolumeUn booléen indiquant s'il faut vérifier qu'on ne va pas créer un volume 'croisé', c'est-à-dire un volume en forme de 8, avec deux faces 3-cousues qui se croisent
ANoTwoEdgesFaceUn booléen indiquant s'il faut vérifier qu'on ne va pas créer de face fermée composée de seulement deux arêtes
ANoTwoFacesVolumeUn booléen indiquant s'il faut vérifier qu'on ne va pas créer de volume fermé composé de seulement deux faces
Returns
Un booléen
virtual CDart* insertEdge ( CDart *  ADart1,
CDart *  ADart2 
)
virtual

Insère une arête topologique entre les sommets incidents aux brins ADart1 et ADart2.

Parameters
ADart1Un pointeur sur un brin
ADart2Un pointeur sur un brin
Returns
Un brin de l'arête topologique insérée

canInsertEdge(ADart1, ADart2)

int insertEdgeOnMarkedFaces ( int  AMarkNumber,
bool  ANoCrossedFace = false,
bool  ANoTwoEdgesFace = false 
)

Insère une arête sur chaque face dont deux sommets sont sélectionnés, lorsque cela est possible. Si ANoCrossedFace est faux, une arête n'est insérée sur une face que si exactement 2 brins de cette face sont marqués. Si ANoCrossedFace est vrai, une arête n'est insérée sur une face que si 2 sommets de cette face sont marqués (2, 3 ou 4 brins marqués).

Parameters
AMarkNumberUn numéro de marque
ANoCrossedFaceUn booléen indiquant s'il faut vérifier qu'on ne va pas créer une face 'croisée', c'est-à-dire une face en forme de 8, avec deux arêtes 2-cousues qui se croisent
ANoTwoEdgesFaceUn booléen indiquant s'il faut vérifier qu'on ne va pas créer de face fermée composée de seulement deux arêtes
Returns
Le nombre d'arêtes insérées
virtual CDart* insertFace ( CDart *  ADart,
int  AMarkNumber,
bool  ANoCrossedVolume = false 
)
virtual

Insère une face le long des arêtes sélectionnées du volume donné.

Parameters
ADartUn brin marqué du volume dans lequel insérer la face
AMarkNumberUn numéro de marque
ANoCrossedVolumeUn booléen indiquant s'il faut vérifier qu'on ne va pas créer un volume 'croisé', c'est-à-dire un volume en forme de 8, avec deux faces 3-cousues qui se croisent
Returns
Un brin de la face créée

canInsertFace(ADart, AMarkNumber)

int insertFaceOnMarkedVolumes ( int  AMarkNumber,
bool  ANoCrossedVolume = false,
bool  ANoTwoEdgesFace = false,
bool  ANoTwoFacesVolume = false 
)

Insère une face sur chaque volume dont plusieurs arêtes sont sélectionnées, lorsque cela est possible.

Parameters
AMarkNumberUn numéro de marque
ANoCrossedVolumeUn booléen indiquant s'il faut vérifier qu'on ne va pas créer un volume 'croisé', c'est-à-dire un volume en forme de 8, avec deux faces 3-cousues qui se croisent
ANoTwoEdgesFaceUn booléen indiquant s'il faut vérifier qu'on ne va pas créer de face fermée composée de seulement deux arêtes
ANoTwoFacesVolumeUn booléen indiquant s'il faut vérifier qu'on ne va pas créer de volume fermé composé de seulement deux faces
Returns
Le nombre de faces insérées
virtual CDart* insertVertex ( CDart *  ADart)
virtual

Insère un sommet topologique sur l'arête incidente au brin ADart.

Parameters
ADartUn pointeur sur un brin
Returns
Un brin du sommet topologique inséré

canInsertVertex(ADart)

int insertVertexOnMarkedEdges ( int  AMarkNumber)

Insère un sommet sur chaque arête dont un brin au moins est marqué, lorsque cela est possible.

Parameters
AMarkNumberUn numéro de marque
Returns
Le nombre d'insertions effectuées
bool turnAroundVertex ( CDart *  ADart,
bool  ANoCrossedVolume,
int  AMarkNumber,
CDart *&  ANext,
bool &  ACrossed 
)
protected

Cette méthode est utilisée par les méthodes 'canInsertFace' et 'insertFace'. Elle permet de se déplacer le long des arêtes marquées d'une volume. Partant d'un brin donné elle tourne autour d'un sommet (orbite 12) jusqu'à trouver s'il existe un brin marqué d'une autre arête que celle sur laquelle se trouve ADart. Les deux derniers paramètres sont des paramètres en sortie.

Parameters
ADartUn brin de la carte, par lequel on est arrivé sur ce sommet
ANoCrossedVolumeUn booléen indiquant si l'insertion de face doit ne pas entraîner l'apparition d'un volume croisé (voir la méthode 'insertFace')
AMarkNumberUn numéro de marque permettant de repérer les brins sélectionnés
ANextUn pointeur sur un brin (paramètre en sortie uniquement)
ACrossedUn booléen indiquant si le brin ANext est tel que la face à insérer est croisée (paramètre en sortie uniquement)
Returns
Un booléen indiquant si le sommet est valide, c'est-à-dire si au plus de 2 des arêtes qui lui sont incidentes sont sélectionnées