Moka kernel
|
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) |
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.
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 |
!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'.
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 |
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.
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 |
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'.
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 |
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'.
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 |
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'.
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 |
!AAxeDirection.isNull() ANbEdges >= 3
|
protected |
Marque un brin sur deux des cellules de dimension ADim qui doivent être extrudées. Voir CGMapGeneric::markCellsToBeExtruded pour plus d'informations.
ADim | Une dimension (0, 1 ou 2) |
AMarkNumberSrce | Un numéro de marque source |
AMarkNumberDest | Un numéro de marque destination |