Moka libraries
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
mv-control-points.hh File Reference

Go to the source code of this file.

Functions

void get4ControlPoints (CDart *ADart, CVertex *AVertexArray, int ADirectInfoAlpha0=-1)
 
void get16ControlPoints (CDart *ADart, CVertex **AVertexArray, int ADirectInfoAlpha0=-1)
 
void get64ControlPoints (CDart *ADart, CVertex ***AVertexArray, int ADirectInfoAlpha0=-1)
 
Méthodes permettant de récupérer les plongements de cellules maillées
CDart * getMesh1Dive (CDart *ADart, int ASx, const CVertex **AVertexTable, bool AAlready2MeshedSquare=false)
 
CDart * getMesh2Dive (CDart *ADart, int ASx, int ASy, const CVertex ***AVertexTable, bool AAlready3MeshedCube=false, int AReturnedDart=3)
 

Function Documentation

void get16ControlPoints ( CDart *  ADart,
CVertex **  AVertexArray,
int  ADirectInfoAlpha0 = -1 
)

Récupère les plongements des 16 sommets appartenant à la grille 3*3 dont ADart est sur la face centrale.

Si ADirectInfoAlpha0 est positif ou nul, les images par alpha0 des brins sont retrouvées à l'aide de ce champ. Cela est utile par exemple pour lisser un carré qui est déjà 1-maillé.

Parameters
ADartUn brin de la carte
AVertexArrayUn pointeur sur 4*4 sommets
ADirectInfoAlpha0Un indice de champ directInfo
void get4ControlPoints ( CDart *  ADart,
CVertex *  AVertexArray,
int  ADirectInfoAlpha0 = -1 
)

Récupère les plongements des 4 sommets appartenant à 3 arêtes consécutives de la carte dont ADart est sur l'arête centrale. AVertexArray est donc un paramètre en sortie.

Si ADart est sur une polyligne, AVertexArray[0] reçoit le plongement de alpha10(ADart), AVertexArray[1] celui de ADart, AVertexArray[2] celui de alpha0(ADart) et AVertexArray[2] celui de alpha010(ADart).

Remarque: La manière dont les 2 points de contrôle situés aux extrémités sont calculés dépend de la dimension du maillage sur lequel se trouve ADart. Par exemple, si ADart est sur une grille, AVertexExtremity[0] reçoit le plongement de alpha1210(ADart).

Si ADirectInfoAlpha0 est positif ou nul, les images par alpha0 des brins sont retrouvées à l'aide de ce champ. Cela est utile par exemple pour lisser une arête dont les arêtes adjacentes sont déjà 1-maillées.

Parameters
ADartUn brin de la carte
AVertexArrayUn pointeur sur 4 sommets
ADirectInfoAlpha0Un indice de champ directInfo
void get64ControlPoints ( CDart *  ADart,
CVertex ***  AVertexArray,
int  ADirectInfoAlpha0 = -1 
)

Récupère les plongements des 64 sommets appartenant à la grille 3*3*3 dont ADart est sur le cube central.

Si ADirectInfoAlpha0 est positif ou nul, les images par alpha0 des brins sont retrouvées à l'aide de ce champ. Cela est utile par exemple pour lisser un cube qui est déjà 2-maillé.

Parameters
ADartUn brin de la carte
AVertexArrayUn pointeur sur 4*4*4 sommets
ADirectInfoAlpha0Un indice de champ directInfo
CDart* getMesh1Dive ( CDart *  ADart,
int  ASx,
const CVertex **  AVertexTable,
bool  AAlready2MeshedSquare = false 
)

Parcourt le maillage 1d en partant de ADart et fait pointer les éléments du tableau AVertexTable sur les plongements des sommets rencontrés.

Si AAlready2MeshedSquare vaut 'faux', le passage d'un sommet à son successeur se fait en utilisant la méthode 'CGMapGeneric::alpha01', sinon il se fait en utilisant la méthode 'CGMapGeneric::alpha0121'.

Cette méthode est utile pour récupérer les plongements des contours d'un carré 1 ou 2-maillé. Elle est utilisée par la méthode 'mesh2'.

Parameters
ADartUn brin de la carte
ASxLe nombre de subdivisions du maillage 1d
AVertexTableUn tableau de pointeurs sur sommets
AAlready2MeshedFaceUn booléen indiquant l'état de l'arête
Returns
Le brin situé à l'autre extrémité du maillage par rapport à ADart

AVertexTable est de dimension ASx+1

CDart* getMesh2Dive ( CDart *  ADart,
int  ASx,
int  ASy,
const CVertex ***  AVertexTable,
bool  AAlready3MeshedCube = false,
int  AReturnedDart = 3 
)

Parcourt le maillage 2d en partant de ADart et fait pointer les éléments du tableau AVertexTable sur les plongements des sommets rencontrés.

Si AAlready3MeshedCube vaut 'faux', le passage d'un sommet à son successeur se fait en utilisant la méthode 'CGMapGeneric::alpha0121', sinon il se fait en utilisant la méthode 'CGMapGeneric::alpha012321'.

Cette méthode est utile pour récupérer les plongements des contours d'un cube 2 ou 3-maillé. Elle est utilisée par la méthode 'mesh3'.

2==AReturnedDart AReturnedDart==3 +** –+– –+– **+ | | | | | | | | +– –+– –+– –+ | | | | | | | | +** –+– –+– **+ ADart AReturnedDart==1

Parameters
ADartUn brin de la carte
ASxLe nombre de subdivisions du maillage selon la 1ère dimension
ASyLe nombre de subdivisions du maillage selon la 2ème dimension
AVertexTableUn tableau de pointeurs sur sommets
AAlready3MeshedCubeUn booléen indiquant l'état de la face
AReturnedDartUn entier indiquant quel brin retourner
Returns
Un brin situé sur un autre coin du maillage, dépendant de la valeur de AReturnedDart (voir schéma)

AVertexTable est de dimension (ASx+1)*(ASy+1)