src/lib-gmapkernel/g-map-vertex/gmv-extrusion.hh File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

CDart * extrudeByNormal (CDart *ADart, int ADim, bool AExtrusionWithAdjacentSews, TCoordinate AExtrusionCoef, int AMarkToExtrude=-1, int AMarkExtruded=-1)
CDart * extrudeByPath (CDart *ADart, int ADim, CDart *APath, bool AExtrusionWithAdjacentSews, bool ARotateExtrudedCells, bool AScaleExtrudedCells, CDart *APonderationPath=NULL, int AMarkExtruded=-1, int ADirectInfoIndex=-1)
int extrudeByPathMarkedCells (int AMarkNumber, int ADim, CDart *APath, bool AExtrusionWithAdjacentSews, int AInitialTranslateExtrudedCells, int AInitialRotateExtrudedCells, bool ARotateExtrudedCells, bool AScaleExtrudedCells, CDart *APonderationPath=NULL)
CDart * createRevolutionPath (const CVertex &AAxeVertex, const CVertex &AAxeDirection, const CVertex &AFirstVertex, TCoordinate AAngle, int ANbEdges)
CDart * extrudeByRevolution (CDart *ADart, int ADim, const CVertex &AAxeVertex, const CVertex &AAxeDirection, const CVertex &AFirstVertex, TCoordinate AAngle, int ANbEdges, bool AExtrusionWithAdjacentSews, bool ARotateExtrudedCells, bool AScaleExtrudedCells, CDart *APonderationPath=NULL, int AMarkExtruded=-1, int ADirectInfoIndex=-1)
int extrudeByRevolutionMarkedCells (int AMarkNumber, int ADim, const CVertex &AAxeVertex, const CVertex &AAxeDirection, TCoordinate AAngle, int ANbEdges, bool AExtrusionWithAdjacentSews, int AInitialTranslateExtrudedCells, int AInitialRotateExtrudedCells, bool ARotateExtrudedCells, bool AScaleExtrudedCells, CDart *APonderationPath=NULL)
void markCellsToBeExtrudedByNormal (int ADim, int AMarkNumberSrce, int AMarkNumberDest)


Function Documentation

CDart* createRevolutionPath ( const CVertex AAxeVertex,
const CVertex AAxeDirection,
const CVertex AFirstVertex,
TCoordinate  AAngle,
int  ANbEdges 
)

Crée un chemin d'extrusion composé de ANbEdges arêtes, ouvert ou fermé selon la valeur de AAngle. Ce chemin est utilisé pour simuler l'extrusion par révolution autour d'un axe.

Parameters:
AAxeVertex Un sommet de l'axe de révolution
AAxeDirection Un vecteur directeur de l'axe de révolution
AFirstVertex La position du 1er sommet du chemin
AAngle L'angle de révolution (compris entre -360 et +360)
ANbEdges Le nombre d'arêtes du chemin
Returns:
Un brin extrémité du chemin
!AAxeDirection.isNull() ANbEdges >= 3

CDart* extrudeByNormal ( CDart *  ADart,
int  ADim,
bool  AExtrusionWithAdjacentSews,
TCoordinate  AExtrusionCoef,
int  AMarkToExtrude = -1,
int  AMarkExtruded = -1 
)

Extrude la cellule de dimension ADim incidente à ADart. Si AMarkToExtrude est positive ou nulle, cette marque indique les cellules qui doivent être extrudées. Selon que les cellules voisines de la cellule en cours doivent être extrudées ou pas et selon la valeur que renvoie la méthode 'CGMapGenericgetExtrusionWithAdacentSews', les plongements ne sont pas calculés de la même manière.

La méthode appelle 'CGMapGenericextrudeByNormal' puis calcule les plongements des sommets topologiques créés.

Pour la signification du paramètre AMarkToExtrude, se reporter à la méthode 'CGMapGenericextrudeByNormal'. Pour la signification des paramètres AMarkExtruded et AExtrusionWithAdjacentSews, se reporter à la méthode 'CGMapGenerictopoExtrude'.

Parameters:
ADart Un brin de la carte
ADim Une dimension (0, 1 ou 2)
AExtrusionWithAdjacentSews Un booléen
AExtrusionCoef Un TCoordinate fixant le coefficient d'extrusion. Ce coefficient est utilisé pour pondérer le vecteur d'extrusion.
AMarkToExtrude Une marque indiquant les cellules à extruder
AMarkExtruded Une marque indiquant les cellules déjà extrudées
Returns:
Un brin de la cellule créée, situé à l'opposé de ADart
canExtrudeCell(ADart, ADim)

CDart* extrudeByPath ( CDart *  ADart,
int  ADim,
CDart *  APath,
bool  AExtrusionWithAdjacentSews,
bool  ARotateExtrudedCells,
bool  AScaleExtrudedCells,
CDart *  APonderationPath = NULL,
int  AMarkExtruded = -1,
int  ADirectInfoIndex = -1 
)

Extrude la cellule de dimension ADim incidente à ADart selon le chemin donné par APath (orbite O1).

La méthode appelle 'CGMapGenericextrudeByPath' puis calcule les plongements des sommets topologiques créés.

Pour la signification du paramètre AMarkExtruded, se reporter à la méthode 'CGMapGenerictopoExtrude'.

Pour la signification du paramètre ADirectInfoIndex, se reporter à la méthode 'CGMapGenericextrudeByPath'.

Si APonderationPath est différent de NULL, une homothétie est appliquée sur chaque section de l'objet obtenu après extrusion. Chaque homothétie est centrée sur le sommet du chemin d'extrusion lui correspondant. APonderationDart désigne un chemin dont les sommets (plus précisément la valeur donnée par 'CVertexgetY' appliquée sur ces sommets) donnent les coefficients d'homothétie.

Remarque: Le nombre d'arêtes du chemin peut être différent du nombre d'arêtes de la fonction de pondération. Si c'est le cas, le paramètre de pondération est calculé par interpolation linéaire.

Remarque: Si la fonction de pondération s'annule pour une valeur donnée, tous les sommets de la section correspondante sont confondus. Cette section réduite à un sommet se propage alors jusqu'à la fin de l'extrusion.

Parameters:
ADart Un brin de la carte incident à la cellule à extruder
ADim Une dimension (1 ou 2)
APath Un brin de la carte incident au chemin d'extrusion
APonderationPath Un brin de la carte
AExtrusionWithAdjacentSews Un booléen
ARotateExtrudedCells Un booléen indiquant si les objets extrudés doivent être orientés
AScaleExtrudedCells Un booléen indiquant si les objets extrudés doivent être redimensionnés
AMarkExtruded Une marque indiquant les cellules déjà extrudées
ADirectInfoIndex Un indice de champ directInfo
Returns:
Un brin de la dernière cellule créée, situé à l'opposé de ADart
canExtrudeByPath(ADart, ADim, APath) APonderationPath==NULL || ! isClosedPolyline(APonderationPath)

int extrudeByPathMarkedCells ( int  AMarkNumber,
int  ADim,
CDart *  APath,
bool  AExtrusionWithAdjacentSews,
int  AInitialTranslateExtrudedCells,
int  AInitialRotateExtrudedCells,
bool  ARotateExtrudedCells,
bool  AScaleExtrudedCells,
CDart *  APonderationPath = NULL 
)

Surcharge la méthode 'CGMapGenericextrudeByPathMarkedCells'. Les cellules sont éventuellement positionnées perpendiculairement au chemin avant d'effectuer l'extrusion (voir méthodes 'setExtrusionInitialPosition' et 'setExtrusionInitialDirection').

Attention: si 'getExtrusionInitialDirection' retourne la valeur 'vrai', le vecteur normal de chaque cellule à extruder est calculé, ce qui implique qu'un brin sur deux au maximum pour chaque cellule doit être sélectionné pour éviter toute ambiguïté.

Pour la signification des paramètres APonderationDart,ARotateExtrudedCells et AScaleExtrudedCells, se reporter à la méthode 'extrudeByPath'.

Parameters:
AMarkNumber Un numéro de marque
ADim Une dimension (1 ou 2)
APath Un brin de la carte incident au chemin d'extrusion
AExtrusionWithAdjacentSews Un booléen
AInitialTranslateExtrudedCells Un entier indiquant si les objets extrudés doivent être translatés sur le premier sommet du chemin. 0 : Aucune translation. 1 : Les objets extrudés sont initialement translatés sur le chemin. 2 : Le chemin est initialement déplacé sur le barycentre des cellules à extruder.
AInitialRotateExtrudedCells Un entier indiquant comment les objets à extruder et le chemin doivent être orientés l'un par rapport à l'autre avant l'extrusion. 0 : Aucune rotation. 1 : Les objets extrudés sont initialement orientés perpendiculairement à la première arête du chemin. 2 : Le chemin est initialement orienté de manière à être perpendiculaire aux cellules à extruder.
ARotateExtrudedCells Un booléen
AScaleExtrudedCells Un booléen
APonderationPath Un brin de la carte
Returns:
Le nombre de cellules extrudées selon le chemin donné

CDart* extrudeByRevolution ( CDart *  ADart,
int  ADim,
const CVertex AAxeVertex,
const CVertex AAxeDirection,
const CVertex AFirstVertex,
TCoordinate  AAngle,
int  ANbEdges,
bool  AExtrusionWithAdjacentSews,
bool  ARotateExtrudedCells,
bool  AScaleExtrudedCells,
CDart *  APonderationPath = NULL,
int  AMarkExtruded = -1,
int  ADirectInfoIndex = -1 
)

Extrude la cellule de dimension ADim incidente à ADart selon autour d'un axe. La méthode crée un chemin constitué de ANbEdges arêtes qui est fermé ou ouvert selon la valeur de AAngle puis appelle la méthode 'extrudeByPath'.

Pour la signification des paramètres AMarkExtruded, ADirectInfoIndex, APonderationPath, AExtrusionWithAdjacentSews, ARotateExtrudedCells, AScaleExtrudedCells se reporter à la méthode 'extrudeByPath'.

Parameters:
ADart Un brin de la carte incident à la cellule à extruder
ADim Une dimension (1 ou 2)
AAxeVertex Un sommet de l'axe de révolution
AAxeDirection Un vecteur directeur de l'axe de révolution
AFirstVertex La position du barycentre des cellules à extruder
AAngle L'angle de révolution (compris entre -360 et +360)
ANbEdges Le nombre de sections à créer
AExtrusionWithAdjacentSews Un booléen
ARotateExtrudedCells Un booléen
AScaleExtrudedCells Un booléen
APonderationPath Un brin de la carte
AMarkExtruded Un numéro de marque
ADirectInfoIndex Un indice de champ directInfo
Returns:
Un brin de la dernière cellule créée, situé à l'opposé de ADart
canExtrudeByRevolution(ADart, ADim, closed), avec closed = vrai si AAngle/360 est une valeur entière !AAxeDirection.isNull() ANbEdges >= 3

int extrudeByRevolutionMarkedCells ( int  AMarkNumber,
int  ADim,
const CVertex AAxeVertex,
const CVertex AAxeDirection,
TCoordinate  AAngle,
int  ANbEdges,
bool  AExtrusionWithAdjacentSews,
int  AInitialTranslateExtrudedCells,
int  AInitialRotateExtrudedCells,
bool  ARotateExtrudedCells,
bool  AScaleExtrudedCells,
CDart *  APonderationPath = NULL 
)

Calcule le chemin correspondant à l'axe donné et appelle la méthode 'extrudeByPathMarkedCells'. Les cellules sont éventuellement positionnées perpendiculairement au chemin avant d'effectuer l'extrusion (voir la méthode 'setExtrusionInitialDirection').

Attention: si 'getExtrusionInitialDirection' retourne la valeur 'vrai', le vecteur normal de chaque cellule à extruder est calculé, ce qui implique qu'un brin sur deux au maximum pour chaque cellule doit être sélectionné pour éviter toute ambiguïté.

Pour la signification du paramètre APonderationDart, AExtrusionWithAdjacentSews, ARotateExtrudedCells et AScaleExtrudedCells se reporter à la méthode 'extrudeByPath'. Pour la signification des paramètres AInitialTranslateExtrudedCells et AInitialRotateExtrudedCells, voir la méthode 'extrudeByPathMarkedCells'.

Parameters:
AMarkNumber Un numéro de marque
ADim Une dimension (1 ou 2)
AAxeVertex Un sommet de l'axe de révolution
AAxeDirection Un vecteur directeur de l'axe de révolution
ANbEdges Le nombre de sections à créer
AExtrusionWithAdjacentSews Un booléen
AInitialTranslateExtrudedCells Un entier
AInitialRotateExtrudedCells Un entier
APonderationPath Un brin de la carte
Returns:
Le nombre de cellules extrudées selon l'axe donné
!AAxeDirection.isNull() ANbEdges >= 3

void markCellsToBeExtrudedByNormal ( int  ADim,
int  AMarkNumberSrce,
int  AMarkNumberDest 
) [protected]

Marque un brin sur deux des cellules de dimension ADim qui doivent être extrudées. Voir CGMapGeneric::markCellsToBeExtruded pour plus d'informations.

Parameters:
ADim Une dimension (0, 1 ou 2)
AMarkNumberSrce Un numéro de marque source
AMarkNumberDest Un numéro de marque destination


Generated on Tue Jul 7 15:20:16 2009 for Moka gmapkernel by  doxygen 1.5.8