src/lib-gmapkernel/g-map-generic/gmg-merge.hh File Reference

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

Go to the source code of this file.

Functions

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)


Function Documentation

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:
ADart Un brin de la carte
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,
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

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

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


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