Go to the source code of this file.
|
int | getMergeDimension (CDart *ADart) |
|
bool | canMerge (CDart *ADart1, CDart *ADart2, int ADim) |
|
void | merge (CDart *ADart1, CDart *ADart2, int ADim, bool ADeleteDarts=false) |
|
int | isolateMarkedCells (int AMarkNumber, int ADim, bool ADeleteDarts=false) |
|
int | intuitiveIsolateMarkedCells (int AMarkNumber, bool ADeleteDarts=false) |
|
int | mergeMarkedCells (int AMarkNumber, int ADim, bool ADeleteDarts=false) |
|
int | intuitiveMergeMarkedCells (int AMarkNumber, bool ADeleteDarts=false) |
|
int | isolateMarkedCells (int AMarkNumber, int ADim, bool ADeleteDarts, bool AVerif, int AMarkTreated=-1) |
|
void | markCellsToBeIsolated (int AMarkSource, int ADim, int AMarkDestination, int AMarkTreated=-1) |
|
bool canMerge |
( |
CDart * |
ADart1, |
|
|
CDart * |
ADart2, |
|
|
int |
ADim |
|
) |
| |
Teste si les deux cellules de dimension ADim désignées par les brins ADart1 et ADart2 peuvent être fusionnées.
- Parameters
-
ADart1 | Un pointeur sur un premier brin |
ADart2 | Un pointeur sur un deuxième brin |
ADim | Une dimension |
- Returns
- Un booléen indiquant si les deux cellules peuvent être fusionnées.
int getMergeDimension |
( |
CDart * |
ADart | ) |
|
Calcule la plus grande dimension pour laquelle ADart est cousu avec un autre brin. Si le brin n'est cousu ni par alpha0, ni par alpha1, ni par alpha2, ni par alpha3, la valeur retournée est -1.
Remarque: Cette méthode n'est plus utilisée par les méthodes intuitiveIsolateMarkedCells et intuitiveMergeMarkedCells.
- Parameters
-
- Returns
- La plus grande dimension pour laquelle le brin n'est pas libre
La valeur retournée vaut 3, 2, 1, 0 ou -1.
int intuitiveIsolateMarkedCells |
( |
int |
AMarkNumber, |
|
|
bool |
ADeleteDarts = false |
|
) |
| |
Isole lorsque cela est possible les cellules dont un brin au moins est marqué. La méthode procède en 3 passes, avec priorité aux cellules de dimension élevée (faces).
- Parameters
-
AMarkNumber | Un numéro de marque |
ADeleteDarts | Un booléen indiquant si les cellules isolées doivent être détruites |
- Returns
- Le nombre de cellules isolées
int intuitiveMergeMarkedCells |
( |
int |
AMarkNumber, |
|
|
bool |
ADeleteDarts = false |
|
) |
| |
Fusionne lorsque cela est possible (avec leurs cellule incidente) les cellules dont un brin au moins est marqué. Les fusions sont faites en 3 passes, avec priorité aux fusions de cellules de dimension élevée (volumes). Lors de chaque passe, les cellules qui doivent être isolées sont déterminées par la méthode protégée 'markCellsToBeIsolated'.
- Parameters
-
AMarkNumber | Un numéro de marque |
ADeleteDarts | Un booléen indiquant si la fusion doit se faire en supprimant des brins |
- Returns
- Le nombre de fusions effectuées
int isolateMarkedCells |
( |
int |
AMarkNumber, |
|
|
int |
ADim, |
|
|
bool |
ADeleteDarts = false |
|
) |
| |
Isole lorsque cela est possible les cellules de dimension ADim en fusionnant entre elles les cellules de dimension ADim+1 qui leurs sont incidentes.
- Parameters
-
AMarkNumber | Un numéro de marque |
ADim | Une dimension (0, 1 ou 2) |
ADeleteDarts | Un booléen indiquant si les cellules isolées doivent être détruites |
- Returns
- Le nombre de cellules isolées
int isolateMarkedCells |
( |
int |
AMarkNumber, |
|
|
int |
ADim, |
|
|
bool |
ADeleteDarts, |
|
|
bool |
AVerif, |
|
|
int |
AMarkTreated = -1 |
|
) |
| |
|
protected |
Cette méthode auxiliaire isole (uniquement lorsque cela est possible si AVerif=='vrai') les cellules de dimension ADim dont un brin au moins est sélectionné, c'est-à-dire qu'elle fusionne les cellules de dimension ADim+1 incidentes aux cellules de dimension ADim marquées. Lorsqu'une cellule est isolée, elle est marquée comme traitée avec la marque AMarkTreated (si AMarkTreated>=0).
Si AVerif=='faux', les cellules marquées doivent impérativement pouvoir être isolées.
La méthode est utilisée par: isolateMarkedCells(int, int, bool), intuitiveIsolateMarkedCells(int, bool), mergeMarkedCells(int, int, bool) et intuitiveMergeMarkedCells(int, bool).
- Parameters
-
AMarkNumber | Un numéro de marque indiquant les brins sélectionnés |
ADim | La dimension des cellules qui doivent être isolées |
ADeleteDarts | Un booléen indiquant si les cellules doivent être supprimées une fois isolées |
AVerif | Un booléen indiquant si pour chaque cellule marquée il faut vérifier si l'opération d'isolement est possible |
AMarkTreated | Un numéro de marque indiquant (si positif ou nul) les brins déjà traités et dont il ne faut donc pas se préoccuper |
- Returns
- Le nombre de cellules isolées
AMarkTreated!=AMarkNumber AVerif=='faux' ou toutes les cellules marquées peuvent être isolées
void markCellsToBeIsolated |
( |
int |
AMarkSource, |
|
|
int |
ADim, |
|
|
int |
AMarkDestination, |
|
|
int |
AMarkTreated = -1 |
|
) |
| |
|
protected |
Marque avec la marque AMarkDestination tous les brins de chaque cellule de dimension ADim qui peut être isolée (c'est-à-dire qui est ADim-cousue et de degré inférieur ou égal à 2) et qui est incidente à des cellules de dimension ADim+1 dont un brin au moins est marqué avec la marque AMarkSource. Voir le corps de la méthode pour plus de détail.
La méthode est utilisée par: mergeMarkedCells(int, int, bool) et intuitiveMergeMarkedCells(int, bool).
- Parameters
-
AMarkSource | Un numéro de marque |
ADim | Une dimension (celle des cellules à isoler) |
AMarkDestination | Un numéro de marque |
AMarkTreated | Un numéro de marque indiquant (si positif ou nul) les brins déjà traités, et dont il ne faut donc pas se préoccuper |
Aucun brin n'est marqué avec la marque AMarkDestination 0 <= ADim <= 2
void merge |
( |
CDart * |
ADart1, |
|
|
CDart * |
ADart2, |
|
|
int |
ADim, |
|
|
bool |
ADeleteDarts = false |
|
) |
| |
Fusionne les deux cellules de dimension ADim désignées par les brins ADart1 et ADart2.
- Parameters
-
ADart1 | Un pointeur sur un premier brin |
ADart2 | Un pointeur sur un deuxième brin |
ADim | Une dimension |
ADeleteDarts | Un booléen indiquant s'il faut supprimer les brins correspondant à la cellule de dimension ADim-1 située entre les cellules de dimension ADim incidentes à ADart1 et ADart2 |
canMerge(ADart1, ADart2, ADim)
int mergeMarkedCells |
( |
int |
AMarkNumber, |
|
|
int |
ADim, |
|
|
bool |
ADeleteDarts = false |
|
) |
| |
Fusionne lorsque cela est possible (avec leur cellule incidente) les cellules dont un brin au moins est marqué. Les cellules de dimension ADim-1 qui doivent être isolées sont déterminées par la méthode protégée 'markCellsToBeIsolated'.
- Parameters
-
AMarkNumber | Un numéro de marque |
ADim | Une dimension (1, 2 ou 3) |
ADeleteDarts | Un booléen indiquant si la fusion doit se faire en supprimant des brins |
- Returns
- Le nombre de fusions effectuées