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

Go to the source code of this file.

Functions

unsigned int markOrbit (CDart *ADart, TOrbit AOrbit, int AMarkNumber)
 
void halfMarkOrbit (CDart *ADart, TOrbit AOrbit, int AMarkNumber)
 
void halfUnmarkOrbit (CDart *ADart, TOrbit AOrbit, int AMarkNumber)
 
void unmarkOrbit (CDart *ADart, TOrbit AOrbit, int AMarkNumber)
 
void unmarkAll (int AMarkNumber)
 
int markIncidentCells (TOrbit AOrbit, int AMarkNumberSrce, int AMarkNumberDest)
 
int markIncidentCells (TOrbit AOrbit, int AMarkNumber)
 
void halfMarkIncidentCells (TOrbit AOrbit, int AMarkNumberSrce, int AMarkNumberDest)
 
void halfMarkIncidentCells (TOrbit AOrbit, int AMarkNumber)
 
void markInterior (CDart *ADart, int ADimension, int AMarkBorder, int AMarkInterior=-1)
 
void markIntersection (int AMarkNumber1, int AMarkNumber2, TOrbit AOrbit1, TOrbit AOrbit2, int AMarkResult, bool AInitialMarkIncidentCells=false)
 
void markCopy (int AMarkNumberFrom, int AMarkNumberTo, CDart *ADart, TOrbit AOrbit)
 
void markCopy (int AMarkNumberFrom, int AMarkNumberTo)
 
void markAdd (int AMarkNumberFrom, int AMarkNumberTo)
 
void markAdd (int AMarkNumberFrom, int AMarkNumberTo, CDart *ADart, TOrbit AOrbit)
 
void markAnd (int AMarkNumberFrom, int AMarkNumberTo)
 
void markAnd (int AMarkNumberFrom, int AMarkNumberTo, CDart *ADart, TOrbit AOrbit)
 
void markSub (int AMarkNumberFrom, int AMarkNumberTo)
 
void markSub (int AMarkNumberFrom, int AMarkNumberTo, CDart *ADart, TOrbit AOrbit)
 
void markMove (int AMarkNumberFrom, int AMarkNumberTo)
 
void markMove (int AMarkNumberFrom, int AMarkNumberTo, CDart *ADart, TOrbit AOrbit)
 
bool isWholeCellMarked (CDart *ADart, TOrbit AOrbit, int AMarkNumber)
 
int getMarkedCells (TOrbit AOrbit, int AMarkNumber, CDart *ALastMarked=NULL, CDart **ADart1=NULL, CDart **ADart2=NULL, CDart **ADart3=NULL)
 

Function Documentation

int getMarkedCells ( TOrbit  AOrbit,
int  AMarkNumber,
CDart *  ALastMarked = NULL,
CDart **  ADart1 = NULL,
CDart **  ADart2 = NULL,
CDart **  ADart3 = NULL 
)

Cherche dans la carte les cellules correspondant à AOrbit dont au moins un brin est marqué pour le numéro de marque AMarkNumber donné. Pour chacune d'entre elles, un brin marqué est choisi et l'un des paramètres ADart- est positionné sur ce brin. Si plus de 3 cellules sont marquées, seules les trois premières trouvées sont mémorisées et la valeur retournée est supérieure à trois. Si moins de 3 cellules sont marquées, les paramètres non utilisés sont positionnés à NULL. Si ALastMarked ne vaut pas NULL, il désigne un brin prioritaire sur les autres. Si ce brin est marqué, il est placé en première position (ADart1 pointe sur lui).

Parameters
AOrbitUne orbite quelconque
AMarkNumberUn numéro de marque
ALastMarkedUn pointeur sur le dernier brin marqué
ADart1Une référence sur un pointeur sur un brin
ADart2Une référence sur un pointeur sur un brin
ADart3Une référence sur un pointeur sur un brin
Returns
Le nombre d'orbites marquées
void halfMarkIncidentCells ( TOrbit  AOrbit,
int  AMarkNumberSrce,
int  AMarkNumberDest 
)

Marque avec la marque AMarkNumberDest un brin sur deux des cellules correspondant à l'orbite AOrbit dont un brin au moins est marqué avec la marque AMarkNumberSrce. Lorsqu'une cellule non orientable est marquée, elle est totalement sélectionnée. Voir la méthode 'halfMarkOrbit' pour plus d'informations.

Parameters
AOrbitUne orbite qui n'est pas une orbite de bord
AMarkNumberSrceUn numéro de marque
AMarkNumberDestUn numéro de marque

AOrbit>=ORBIT_SELF && AOrbit<=Orbit_CC AMarkNumberSrce!=AMarkNumberDest

void halfMarkIncidentCells ( TOrbit  AOrbit,
int  AMarkNumber 
)

Marque un brin sur deux des cellules correspondant à l'orbite AOrbit dont un brin au moins est marqué. Lorsqu'une cellule non orientable est marquée, elle est totalement sélectionnée. Voir la méthode 'halfMarkOrbit' pour plus d'informations.

Parameters
AOrbitUne orbite qui n'est pas une orbite de bord
AMarkNumberUn numéro de marque

AOrbit>=ORBIT_SELF && AOrbit<=Orbit_CC

void halfMarkOrbit ( CDart *  ADart,
TOrbit  AOrbit,
int  AMarkNumber 
)

Marque un brin sur deux de l'orbite AOrbit incidente à ADart en utilisant la marque numéro AMarkNumber. Attention: Cette méthode ne fonctionne pas si l'orbite est une orbite de bord !

Parameters
ADartUn brin quelconque
AOrbitUne orbite
AMarkNumberUn numéro de marque

AOrbit n'est pas une orbite de bord isOrientable(ADart, AOrbit) isMarked(ADart, AMarkNumber) Soient b un brin de l'orbite (ADart,AOrbit) et i une dimension (0, 1, 2 ou 3) tels que alpha(b,i) soit lui aussi sur l'orbite (ADart, AOrbit). On a : isMarked( b , AMarkNumber) != isMarked(alpha(b,i), AMarkNumber)

void halfUnmarkOrbit ( CDart *  ADart,
TOrbit  AOrbit,
int  AMarkNumber 
)

Démarque un brin sur deux de l'orbite AOrbit incidente à ADart en utilisant la marque numéro AMarkNumber. Attention: Cette méthode ne fonctionne pas si l'orbite est une orbite de bord !

Parameters
ADartUn brin quelconque
AOrbitUne orbite
AMarkNumberUn numéro de marque

AOrbit n'est pas une orbite de bord isOrientable(ADart, AOrbit) !isMarked(ADart, AMarkNumber) Soient b un brin de l'orbite (ADart,AOrbit) et i une dimension (0, 1, 2 ou 3) tels que alpha(b,i) soit lui aussi sur l'orbite (ADart, AOrbit). On a : isMarked( b , AMarkNumber) != isMarked(alpha(b,i), AMarkNumber)

bool isWholeCellMarked ( CDart *  ADart,
TOrbit  AOrbit,
int  AMarkNumber 
)

Teste si tous les brins de la cellule déterminée par le brin ADart et l'orbite AOrbit sont marqués avec la marque AMarkNumber.

Parameters
ADartUn brin quelconque de la carte
AOrbitUne orbite quelconque
AMarkNumberUn numéro de marque
Returns
Un booléen
void markAdd ( int  AMarkNumberFrom,
int  AMarkNumberTo 
)

Pour chacun des brins de la carte, positionne la marque AMarkNumberTo à vrai si la marque AMarkNumberFrom est positionnée à vrai.

Parameters
AMarkNumberFromUn numéro de marque
AMarkNumberToUn numéro de marque

AMarkNumberFrom!=AMarkNumberTo

void markAdd ( int  AMarkNumberFrom,
int  AMarkNumberTo,
CDart *  ADart,
TOrbit  AOrbit 
)

Pour chacun des brins de l'orbite déterminée par ADart et AOrbit, positionne la marque AMarkNumberTo à vrai si la marque AMarkNumberFrom est positionnée à vrai.

Parameters
AMarkNumberFromUn numéro de marque
AMarkNumberToUn numéro de marque
ADartUn brin de la carte
AOrbitUne orbite quelconque

AMarkNumberFrom!=AMarkNumberTo

void markAnd ( int  AMarkNumberFrom,
int  AMarkNumberTo 
)

Pour chacun des brins de la carte, positionne la marque AMarkNumberTo à faux si la marque AMarkNumberFrom est positionnée à faux.

Parameters
AMarkNumberFromUn numéro de marque
AMarkNumberToUn numéro de marque

AMarkNumberFrom!=AMarkNumberTo

void markAnd ( int  AMarkNumberFrom,
int  AMarkNumberTo,
CDart *  ADart,
TOrbit  AOrbit 
)

Pour chacun des brins de l'orbite déterminée par ADart et AOrbit, positionne la marque AMarkNumberTo à faux si la marque AMarkNumberFrom est positionnée à faux.

Parameters
AMarkNumberFromUn numéro de marque
AMarkNumberToUn numéro de marque
ADartUn brin de la carte
AOrbitUne orbite quelconque

AMarkNumberFrom!=AMarkNumberTo

void markCopy ( int  AMarkNumberFrom,
int  AMarkNumberTo,
CDart *  ADart,
TOrbit  AOrbit 
)

Pour chacun des brins de l'orbite déterminée par ADart et AOrbit, positionne la marque AMarkNumberTo sur le même état que la marque AMarkNumberFrom.

Parameters
AMarkNumberFromUn numéro de marque
AMarkNumberToUn numéro de marque
ADartUn brin de la carte
AOrbitUne orbite quelconque

AMarkNumberFrom!=AMarkNumberTo

void markCopy ( int  AMarkNumberFrom,
int  AMarkNumberTo 
)

Pour chacun des brins de la carte, positionne la marque AMarkNumberTo sur le même état que la marque AMarkNumberFrom.

Parameters
AMarkNumberFromUn numéro de marque
AMarkNumberToUn numéro de marque

AMarkNumberFrom!=AMarkNumberTo

int markIncidentCells ( TOrbit  AOrbit,
int  AMarkNumberSrce,
int  AMarkNumberDest 
)

Marque avec la marque AMarkNumberDest toutes les cellules correspondant à l'orbite AOrbit dont un brin au moins est marqué avec la marque AMarkNumberSrce.

Parameters
AOrbitUne orbite quelconque
AMarkNumberSrceUn numéro de marque
AMarkNumberDestUn numéro de marque
Returns
Le nombre de cellules marquées

AMarkNumberSrce!=AMarkNumberDest

int markIncidentCells ( TOrbit  AOrbit,
int  AMarkNumber 
)

Marque entièrement les cellules correspondant à l'orbite AOrbit dont un brin au moins est marqué.

Parameters
AOrbitUne orbite quelconque
AMarkNumberUn numéro de marque
Returns
Le nombre de cellules marquées
void markInterior ( CDart *  ADart,
int  ADimension,
int  AMarkBorder,
int  AMarkInterior = -1 
)

Marque tous les brins de la carte qui sont à l'intérieur d'une région dont le bord est donné par les brins marqués avec la marque AMarkBorder. ADart est un brin situé à l'intérieur de la région. Les brins sont marqués avec la marque AMarkInterior. Les brins du bord ne sont pas marqués.

Parameters
ADartUn brin de la carte
ADimensionUne dimension (2 ou 3)
AMarkBorderUn numéro de marque
AMarkInteriorUn numéro de marque
void markIntersection ( int  AMarkNumber1,
int  AMarkNumber2,
TOrbit  AOrbit1,
TOrbit  AOrbit2,
int  AMarkResult,
bool  AInitialMarkIncidentCells = false 
)

Cette méthode permet de sélectionner une partie du bord d'une cellule en calculant l'intersection entre cette cellule et une autre qui lui est adjacente.

Parameters
AMarkNumber1un numéro de marque
AMarkNumber2un numéro de marque différent de AMarkNumber1
AOrbit1une orbite quelconque (orbite de sélection)
AOrbit2une orbite quelconque (orbite du résultat)
AMarkResultla marque où est stocké le résultat
AInitialMarkIncidentCellsun booléen indiquant s'il faut initialiser les marquages
void markMove ( int  AMarkNumberFrom,
int  AMarkNumberTo 
)

Pour chacun des brins de la carte, positionne la marque AMarkNumberTo à vrai si la marque AMarkNumberFrom est positionnée à vrai, puis positionne la marque AMarkNumberFrom à faux.

Parameters
AMarkNumberFromUn numéro de marque
AMarkNumberToUn numéro de marque

AMarkNumberFrom!=AMarkNumberTo

void markMove ( int  AMarkNumberFrom,
int  AMarkNumberTo,
CDart *  ADart,
TOrbit  AOrbit 
)

Pour chacun des brins de l'orbite déterminée par ADart et AOrbit, positionne la marque AMarkNumberTo à vrai si la marque AMarkNumberFrom est positionnée à vrai, puis positionne la marque AMarkNumberFrom à faux.

Parameters
AMarkNumberFromUn numéro de marque
AMarkNumberToUn numéro de marque
ADartUn brin de la carte
AOrbitUne orbite quelconque

AMarkNumberFrom!=AMarkNumberTo

unsigned int markOrbit ( CDart *  ADart,
TOrbit  AOrbit,
int  AMarkNumber 
)

Marque tous les brins de l'orbite AOrbit incidente à ADart en utilisant la marque numéro AMarkNumber.

Parameters
ADartUn brin quelconque
AOrbitUne orbite
AMarkNumberUn numéro de marque
Returns
the number of marked darts
void markSub ( int  AMarkNumberFrom,
int  AMarkNumberTo 
)

Pour chacun des brins de la carte, positionne la marque AMarkNumberTo à faux si la marque AMarkNumberFrom est positionnée à vrai.

Parameters
AMarkNumberFromUn numéro de marque
AMarkNumberToUn numéro de marque

AMarkNumberFrom!=AMarkNumberTo

void markSub ( int  AMarkNumberFrom,
int  AMarkNumberTo,
CDart *  ADart,
TOrbit  AOrbit 
)

Pour chacun des brins de l'orbite déterminée par ADart et AOrbit, positionne la marque AMarkNumberTo à faux si la marque AMarkNumberFrom est positionnée à vrai.

Parameters
AMarkNumberFromUn numéro de marque
AMarkNumberToUn numéro de marque
ADartUn brin de la carte
AOrbitUne orbite quelconque

AMarkNumberFrom!=AMarkNumberTo

void unmarkAll ( int  AMarkNumber)

Démarque tous les brins de la carte pour la marque numéro AMarkNumber.

Parameters
AMarkNumberUn numéro de marque
void unmarkOrbit ( CDart *  ADart,
TOrbit  AOrbit,
int  AMarkNumber 
)

Démarque tous les brins de l'orbite AOrbit incidente à ADart pour la marque numéro AMarkNumber.

Parameters
ADartUn brin quelconque
AOrbitUne orbite
AMarkNumberUn numéro de marque