|
bool | canExtrudeHalfCell (CDart *ADart, int ADim, int AMarkToExtrude=-1) |
|
bool | canExtrudeCell (CDart *ADart, int ADim) |
|
int | getExtrusionDimension (CDart *ADart) |
|
CDart * | topoExtrude (CDart *ADart, int ADim, bool AExtrusionWithAdjacentSews, int AMarkExtruded=-1, int ADirectInfoIndex=-1) |
|
virtual CDart * | extrudeByNormal (CDart *ADart, int ADim, bool AExtrusionWithAdjacentSews, TCoordinate AExtrusionCoef, int AMarkToExtrude=-1, int AMarkExtruded=-1) |
|
int | extrudeByNormalMarkedCells (int AMarkNumber, int ADim, bool AExtrusionWithAdjacentSews, TCoordinate AExtrusionCoef) |
|
int | intuitiveExtrudeByNormalMarkedCells (int AMarkNumber, bool AExtrusionWithAdjacentSews, TCoordinate AExtrusionCoef) |
|
bool | canExtrudeByPath (CDart *ADart, int ADim, CDart *APath) |
|
virtual CDart * | extrudeByPath (CDart *ADart, int ADim, CDart *APath, bool AExtrusionWithAdjacentSews, int AMarkExtruded=-1, int ADirectInfoIndex=-1) |
|
virtual int | extrudeByPathMarkedCells (int AMarkNumber, int ADim, CDart *APath, bool AExtrusionWithAdjacentSews) |
|
bool | canExtrudeByRevolution (CDart *ADart, int ADim, bool AClosed) |
|
virtual CDart * | createRevolutionPath (bool AClosed, int ANbEdges) |
|
void | destroyRevolutionPath (CDart *ADart) |
|
virtual CDart * | extrudeByRevolution (CDart *ADart, int ADim, bool AClosed, int ANbEdges, bool AExtrusionWithAdjacentSews, int AMarkExtruded=-1, int ADirectInfoIndex=-1) |
|
virtual int | extrudeByRevolutionMarkedCells (int AMarkNumber, int ADim, bool AClosed, int ANbEdges, bool AExtrusionWithAdjacentSews) |
|
virtual void | markCellsToBeExtrudedByNormal (int ADim, int AMarkNumberSrce, int AMarkNumberDest) |
|
int | extrudeByNormalMarkedCells (int AMarkNumber, int ADim, int AMarkTreated, bool AExtrusionWithAdjacentSews, TCoordinate AExtrusionCoef) |
|
bool canExtrudeCell |
( |
CDart * |
ADart, |
|
|
int |
ADim |
|
) |
| |
Teste si la cellule de dimension ADim incidente à ADart (ORBIT_CELL[ADim]) peut être extrudée. C'est le cas si tous les brins qui la constituent sont ADim+1-libres ou si tous les brins qui la constituent sont ADim-libres.
Si l'extrusion est possible et si au moins un brin de la cellule est ADim-cousu, cela signifie que la cellule va être dupliquée avant l'extrusion. Par exemple pour extruder une face d'un volume, les brins de la face étant 2-cousus il faut créer de nouveaux brins et les 3-coudre à la face avant d'appliquer l'extrusion sur la demi-face nouvellement créée.
- Parameters
-
ADart | Un brin de la carte |
ADim | Une dimension (0, 1 ou 2) |
- Returns
- Un booléen indiquant si l'extrusion est possible
virtual CDart* extrudeByNormal |
( |
CDart * |
ADart, |
|
|
int |
ADim, |
|
|
bool |
AExtrusionWithAdjacentSews, |
|
|
TCoordinate |
AExtrusionCoef, |
|
|
int |
AMarkToExtrude = -1 , |
|
|
int |
AMarkExtruded = -1 |
|
) |
| |
|
virtual |
Extrude la cellule de dimension ADim incidente à ADart en s'appuyant sur la méthode 'topoExtrude'.
Le paramètre AMarkToExtrude est un numéro de marque indiquant quelles cellules doivent être extrudées. Ce paramètre est utile lors du calcul des plongements.
Pour la signification des paramètre AExtrusionWithAdjacentSews et AMarkExtruded, se reporter à la méthode 'topoExtrude'.
- 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. |
AMarkToExtrude | Un numéro de marque |
AMarkExtruded | Un numéro de marque |
- Returns
- Un brin de la cellule créée, situé à l'opposé de ADart
canExtrudeCell(ADart, ADim)
int extrudeByNormalMarkedCells |
( |
int |
AMarkNumber, |
|
|
int |
ADim, |
|
|
int |
AMarkTreated, |
|
|
bool |
AExtrusionWithAdjacentSews, |
|
|
TCoordinate |
AExtrusionCoef |
|
) |
| |
|
protected |
Extrude lorsque c'est possible les cellules de dimension ADim qui sont marquées avec la marque AMarkNumber.
Le résultat obtenu dépend de la valeur que donne la méthode 'getExtrusionWithAdjacentSews'.
Si AMarkTreated est positif ou nul, les cellules extrudées sont marquées comme telles avec la marque AMarkTreated. Ceci permet de ne pas extruder plusieurs fois la même cellule dans des dimensions différentes (voir méthode 'intuitiveExtrudeMarkedCells').
Remarque: Comme CGMapGeneric ne traite pas les plongements, aucune vérification sur les brins sélectionnés n'est effectuée. Par exemple, en dimension 2 si un brin d'une face est sélectionné et si sont alpha0 l'est aussi, on ne peut pas effectuer le calcul des plongements car il y alpha ambiguïté sur le sens de la normale de la face à extruder. Cependant, topologiquement il n'y alpha aucun problème. Cette méthode devra donc être surchargée dans les classes dérivant de CGMapGeneric.
- Parameters
-
AMarkNumber | Un numéro de marque |
ADim | Une dimension (0, 1 ou 2) |
AMarkTreated | Un numéro de marque |
AExtrusionWithAdjacentSews | Un booléen |
AExtrusionCoef | Un TCoordinate fixant le coefficient d'extrusion. |
- Returns
- Le nombre de cellules extrudées
virtual CDart* extrudeByPath |
( |
CDart * |
ADart, |
|
|
int |
ADim, |
|
|
CDart * |
APath, |
|
|
bool |
AExtrusionWithAdjacentSews, |
|
|
int |
AMarkExtruded = -1 , |
|
|
int |
ADirectInfoIndex = -1 |
|
) |
| |
|
virtual |
Extrude la cellule de dimension ADim incidente à ADart selon le chemin donné par APath (orbite O1) en s'appuyant sur la méthode 'topoExtrude' appelée plusieurs fois.
Le paramètre ADirectInfoIndex est un indice de champ directInfo dans lequel sont mémorisées les ADim-coutures des brins avant extrusion. Ce paramètre est utile pour la couture des cellules extrudées adjacentes si le chemin est fermé ou si le brin initial est au milieu du chemin. En effet, dans ce cas là la cellule extrudée se retrouve isolée et lorsque ses ex-voisines sont à leur tour extrudées, on ne peut pas déterminer à quelle cellules les cellules issues de l'extrusion doivent être cousues.
Pour la signification des paramètre AExtrusionWithAdjacentSews et AMarkExtruded, se reporter à la méthode 'topoExtrude'.
- 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 |
AExtrusionWithAdjacentSews | Un booléen |
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
canExtrudeByPath(ADart, ADim, APath)
virtual CDart* extrudeByRevolution |
( |
CDart * |
ADart, |
|
|
int |
ADim, |
|
|
bool |
AClosed, |
|
|
int |
ANbEdges, |
|
|
bool |
AExtrusionWithAdjacentSews, |
|
|
int |
AMarkExtruded = -1 , |
|
|
int |
ADirectInfoIndex = -1 |
|
) |
| |
|
virtual |
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 AClosed puis appelle la méthode 'extrudeByPath'.
Pour la signification des paramètres AMarkExtruded et ADirectInfoIndex, se reporter à la méthode 'extrudeByPath'.
- Parameters
-
ADart | Un brin de la carte incident à la cellule à extruder |
ADim | Une dimension (1 ou 2) |
AClosed | Un booléen indiquant si la révolution est complète (angle de 360°) |
ANbEdges | Le nombre de sections à créer |
AExtrusionWithAdjacentSews | Un booléen |
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, AClosed) ANbEdges >= 3
CDart* topoExtrude |
( |
CDart * |
ADart, |
|
|
int |
ADim, |
|
|
bool |
AExtrusionWithAdjacentSews, |
|
|
int |
AMarkExtruded = -1 , |
|
|
int |
ADirectInfoIndex = -1 |
|
) |
| |
Extrude la cellule de dimension ADim incidente à ADart.
Si AMarkExtruded est positif ou nul et si la méthode 'getExtrusionWithAdacentSews' renvoie la valeur 'vrai', la cellule extrudée est cousue aux cellules adjacentes déjà extrudées. Si ADirectInfoIndex est positif ou nul, les cellules adjacentes sont déterminées à partir du champ directInfo correspondant (ce champ mémorise simplement l'image par alpha-ADim de chaque brin). Ceci est particulièrement utile pour la méthode 'extrudeByPath' lorsque le chemin est fermé ou lorsque le brin initial est au milieu du chemin. En effet, dans ce cas là les cellules sont isolées avant extrusion d'où l'impossibilité de retrouver les cellules adjacentes qui ont déjà été extrudées (voir la méthode 'extrudeByPath' pour plus d'informations).
Ces cellules de dimension ADim+1 peuvent facilement être repérées car les cellules de dimension ADim à partir desquelles on les alpha obtenues sont marquées avec la marque AMarkExtruded.
- Parameters
-
ADart | Un brin de la carte |
ADim | Une dimension (0, 1 ou 2) |
AExtrusionWithAdjacentSews | Un booléen pour indiquer comment doit s'effectuer l'extrusion. Si vrai', les cellules adjacentes extrudées en parallèle sont cousues entre elles, sinon elles ne sont pas cousues entre elles |
AMarkExtruded | Un numéro de marque |
ADirectInfoIndex | Un indice de champ directInfo |
- Returns
- Un brin de la cellule créée, situé à l'opposé de ADart
canExtrudeCell(ADart, ADim)