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

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
AAxeVertexUn sommet de l'axe de révolution
AAxeDirectionUn vecteur directeur de l'axe de révolution
AFirstVertexLa position du 1er sommet du chemin
AAngleL'angle de révolution (compris entre -360 et +360)
ANbEdgesLe 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 'CGMapGeneric::getExtrusionWithAdacentSews', les plongements ne sont pas calculés de la même manière.

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

Pour la signification du paramètre AMarkToExtrude, se reporter à la méthode 'CGMapGeneric::extrudeByNormal'. Pour la signification des paramètres AMarkExtruded et AExtrusionWithAdjacentSews, se reporter à la méthode 'CGMapGeneric::topoExtrude'.

Parameters
ADartUn brin de la carte
ADimUne dimension (0, 1 ou 2)
AExtrusionWithAdjacentSewsUn booléen
AExtrusionCoefUn TCoordinate fixant le coefficient d'extrusion. Ce coefficient est utilisé pour pondérer le vecteur d'extrusion.
AMarkToExtrudeUne marque indiquant les cellules à extruder
AMarkExtrudedUne 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 'CGMapGeneric::extrudeByPath' puis calcule les plongements des sommets topologiques créés.

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

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

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 'CVertex::getY' 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
ADartUn brin de la carte incident à la cellule à extruder
ADimUne dimension (1 ou 2)
APathUn brin de la carte incident au chemin d'extrusion
APonderationPathUn brin de la carte
AExtrusionWithAdjacentSewsUn booléen
ARotateExtrudedCellsUn booléen indiquant si les objets extrudés doivent être orientés
AScaleExtrudedCellsUn booléen indiquant si les objets extrudés doivent être redimensionnés
AMarkExtrudedUne marque indiquant les cellules déjà extrudées
ADirectInfoIndexUn 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 'CGMapGeneric::extrudeByPathMarkedCells'. 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
AMarkNumberUn numéro de marque
ADimUne dimension (1 ou 2)
APathUn brin de la carte incident au chemin d'extrusion
AExtrusionWithAdjacentSewsUn booléen
AInitialTranslateExtrudedCellsUn 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.
AInitialRotateExtrudedCellsUn 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.
ARotateExtrudedCellsUn booléen
AScaleExtrudedCellsUn booléen
APonderationPathUn 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
ADartUn brin de la carte incident à la cellule à extruder
ADimUne dimension (1 ou 2)
AAxeVertexUn sommet de l'axe de révolution
AAxeDirectionUn vecteur directeur de l'axe de révolution
AFirstVertexLa position du barycentre des cellules à extruder
AAngleL'angle de révolution (compris entre -360 et +360)
ANbEdgesLe nombre de sections à créer
AExtrusionWithAdjacentSewsUn booléen
ARotateExtrudedCellsUn booléen
AScaleExtrudedCellsUn booléen
APonderationPathUn brin de la carte
AMarkExtrudedUn numéro de marque
ADirectInfoIndexUn 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
AMarkNumberUn numéro de marque
ADimUne dimension (1 ou 2)
AAxeVertexUn sommet de l'axe de révolution
AAxeDirectionUn vecteur directeur de l'axe de révolution
ANbEdgesLe nombre de sections à créer
AExtrusionWithAdjacentSewsUn booléen
AInitialTranslateExtrudedCellsUn entier
AInitialRotateExtrudedCellsUn entier
APonderationPathUn 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
ADimUne dimension (0, 1 ou 2)
AMarkNumberSrceUn numéro de marque source
AMarkNumberDestUn numéro de marque destination