Moka kernel
|
Go to the source code of this file.
Enumerations | |
enum | TMovement { Forward, Backward, Left, Right } |
Functions | |
CDart * | go (TMovement ADirection, CDart *ALastDart, TOrbit AOrbit, int AMarkNumber, bool ASelect=true) |
CDart * | goAsFarAsPossible (TMovement ADirection, CDart *ALastDart, TOrbit AOrbit, int AMarkNumber, bool ASelect=true) |
enum TMovement |
Les différents mouvements que supporte la méthode 'go'.
Definition at line 33 of file gmg-exploration.hh.
CDart* go | ( | TMovement | ADirection, |
CDart * | ALastDart, | ||
TOrbit | AOrbit, | ||
int | AMarkNumber, | ||
bool | ASelect = true |
||
) |
*** MÉTHODE À REVOIR ***
Cette méthode permet de marquer ou démarquer facilement une cellule adjacente à celle donnée par le couple (ALastDart, AOrbit). Appelée plusieurs fois (voir la méthode 'goAsFarAsPossible'), elle permet de sélectionner des brins le long d'un chemin.
Par exemple, pour couper une sphère en deux le long d'un de ses parallèles, il faut préalablement sélectionner les arêtes qui correspondent à ce parallèle. Il s'agît donc de sélectionner certaines arêtes d'un volume. Ces arêtes correspondent à une orbite 02 (deuxième ligne du tableau). Le tableau indique comment se font les déplacements. Dans ce cas précis, pour avancer on recherche alpha1210(ALastDart). Si on désire tourner à droite, c'est alpha120(ALastDart) qui est recherché, etc... Après avoir tourné à gauche ou à droite, on voit donc que pour continuer son trajet il faut repartir dans le sens contraire de celui dans lequel on est arrivé (si avant de tourner on a fait un go(Forward), il faut continuer le trajet en faisant un go(Backward) et inversement).
Si ASelect vaut 'vrai' et si un brin de l'orbite n'est pas marqué, alors tous les brins de l'orbite sont marqués avec la marque AMarkNumber et aucun déplacement n'est effectué (quelle que soit la direction donnée). Si ASelect vaut 'vrai' et si tous les brins de l'orbite sont marqués, alors un déplacement est effectué et tous les brins de l'orbite donnée correspondant au brin atteint sont marqués. Si ASelect vaut 'faux', tous les brins de l'orbite donnée sont démarqués puis un déplacement est effectué. Le brin atteint est alors marqué.
S'il n'y a pas de brin atteignable, la méthode retourne ALastDart. Sinon, qu'il y ait déplacement ou pas, la méthode retourne le brin atteint (s'il n'y a pas de déplacement ce brin est donc ALastDart).
Tableau récapitulatif: DIRECTION ORBITE Forward Backward Left Right | | | | | | 0–3 (arête /face ) | 1 0 | 0 1 | 010 | 010 | 0-2- (arête /volume) | 1[2 1]0 | 0[1 2]1 | [2]010 | 010[2] | 0-23 (arête /cc ) | 1[2[32]1]0 | 0[1[23]2]1 | [2]0 | 010[2] | 01– (face /volume) | 2 1 01 | 10 1 2 | 01 | 10 | 01-3 (face /cc ) | 2 [32]1 01 | 10 1[23] 2 | 01 | 10 | 012- (volume/cc ) | 3 2 1 012 | 210 1 2 3 | 012 | 210
Les autres orbites ne sont pas supportées (appeler la méthode avec une d'entre elles provoque un résultat imprévisible). Les crochets [] indiquent les orbites qui peuvent être ignorées. Par exemple, dans le cas de sélection de faces dans une composante connexe (orbite 013), si on effectue un go(Forward) alors que alpha2(ALastDart) est 3-libre, c'est alpha2101(ALastDart) qui sera atteint. Par contre, si ALastDart est 2-libre, ou si alpha2(ALastDart) est 1-libre, ou alpha21(ALastDart) est 0-libre, ou etc... la méthode retourne ALastDart.
ADirection | La direction dans laquelle se fait le déplacement |
ALastDart | Le brin de départ |
AOrbit | L'orbite indiquant quel type de déplacement effectuer |
AMarkNumber | Un numéro de marque |
ASelect | Indique s'il faut sélectionner ou désélectionner les brins |
L'orbite donnée est mentionnée dans le tableau récapitulatif
CDart* goAsFarAsPossible | ( | TMovement | ADirection, |
CDart * | ALastDart, | ||
TOrbit | AOrbit, | ||
int | AMarkNumber, | ||
bool | ASelect = true |
||
) |
Cette méthode permet de sélectionner facilement plusieurs cellules adjacentes de la carte. Elle appelle la méthode 'go' autant de fois que possible, c'est-à-dire jusqu'à atteindre un brin déjà rencontré ou un brin à partir duquel il est impossible d'avancer.
ADirection | La direction dans laquelle se fait le déplacement |
ALastDart | Le brin de départ |
AOrbit | L'orbite indiquant quel type de déplacement effectuer |
AMarkNumber | Un numéro de marque |
ASelect | Indique s'il faut sélectionner ou désélectionner les brins |
L'orbite donnée est mentionnée dans le tableau récapitulatif de la méthode 'go'