Moka libraries
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
GMap3d::CMeshVertex Class Reference

#include <mesh-vertex.hh>

Inheritance diagram for GMap3d::CMeshVertex:
GMap3d::CMeshGeneric

Public Member Functions

 CMeshVertex (CGMapVertex *AMap)
 Constructeur.
 
 ~CMeshVertex ()
 Destructeur.
 
Allocation et libération de tableaux de points

(pour la récupération des plongements nécessaires à une interpolation)

CVertex * allocVertexArray1 (int ADimX)
 
void freeVertexArray1 (CVertex *AArray1, int ADimX)
 
CVertex ** allocVertexArray2 (int ADimX, int ADimY)
 
void freeVertexArray2 (CVertex **AArray2, int ADimX, int ADimY)
 
CVertex *** allocVertexArray3 (int ADimX, int ADimY, int ADimZ)
 
void freeVertexArray3 (CVertex ***AArray3, int ADimX, int ADimY, int ADimZ)
 
const CVertex ** allocVertexPtrArray1 (int ADimX)
 
void freeVertexPtrArray1 (const CVertex **AArray1, int ADimX)
 
const CVertex *** allocVertexPtrArray2 (int ADimX, int ADimY)
 
void freeVertexPtrArray2 (const CVertex ***AArray2, int ADimX, int ADimY)
 
const CVertex **** allocVertexPtrArray3 (int ADimX, int ADimY, int ADimZ)
 
void freeVertexPtrArray3 (const CVertex ****AArray3, int ADimX, int ADimY, int ADimZ)
 
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)
 
virtual void mesh1 (CDart *ADart, int ASx, const CTransformationMatrix *AMeshMatrix, bool AMeshWithMerges=true, bool AMeshWithAdjacentSews=true, bool AMeshAssociatedCells=false, int ADirectInfoAlpha0=-1, int ADirectInfoAssoc=-1)
 
virtual void mesh2 (CDart *ADart, int ASx, int ASy, const CTransformationMatrix *AMeshMatrix, bool AMeshWithMerges=true, bool AMeshWithAdjacentSews=true, bool AMeshAssociatedCells=false, bool AGetAssociatedEmbeddings=false, int AInitialMeshDim=0, int AFinalMeshDim=2, int ADirectInfoAlpha0=-1, int ADirectInfoAssoc=-1)
 
virtual void mesh3 (CDart *ADart, int ASx, int ASy, int ASz, const CTransformationMatrix *AMeshMatrix, bool AMeshWithMerges=true, bool AMeshWithAdjacentSews=true, bool AMeshAssociatedCells=false, int AInitialMeshDim=0, int AFinalMeshDim=3, int ADirectInfoAlpha0=-1, int ADirectInfoAssoc=-1)
 
- Public Member Functions inherited from GMap3d::CMeshGeneric
 CMeshGeneric (CGMapGeneric *AMap)
 Constructeur.
 
virtual ~CMeshGeneric ()
 Destructeur.
 
bool canMesh1 (CDart *ADart)
 
bool canMesh2 (CDart *ADart, int ASx, int ASy, int AInitialMeshDim=0)
 
bool canMesh3 (CDart *ADart, int ASx, int ASy, int ASz, int AInitialMeshDim=0)
 
bool isTopoEdge (CDart *ADart, CDart *AModel=NULL)
 
bool isTopoEdge1Meshed (CDart *ADart, int ASx, CDart *AModel=NULL)
 
bool isTopoEdgeIMeshed (int ADim, CDart *ADart, int AS=1, CDart *AModel=NULL)
 
bool isTopoSquare (CDart *ADart, bool ACheck3Sews=false, bool A3Sewed=false)
 
bool isTopoSquare1Meshed (CDart *ADart, int ASx, int ASy, bool ACheck3Sews=false, bool A3Sewed=false)
 
bool isTopoSquare2Meshed (CDart *ADart, int ASx, int ASy, bool ACheck3Sews=false, bool A3Sewed=false)
 
bool isTopoSquare3Meshed (CDart *ADart, int ASx, int ASy, bool ACheck3Sews=false, bool A3Sewed=false)
 
bool isTopoSquareIMeshed (int ADim, CDart *ADart, int ASx=1, int ASy=1, bool ACheck3Sews=false, bool A3Sewed=false)
 
bool isFreeTopoSquareIMeshed (int ADim, CDart *ADart, int ASx, int ASy, int AMarkNumberNotX1, int AMarkNumberNotX2, int AMarkNumberNotY1, int AMarkNumberNotY2, int AReturnedDart=3, CDart **AOppositeDart=NULL)
 
bool isFreeTopoCubeIMeshed (int ADim, CDart *ADart, int ASx, int ASy, int ASz, int AMarkNumberNotX1, int AMarkNumberNotX2, int AMarkNumberNotY1, int AMarkNumberNotY2, int AMarkNumberZ1, int AMarkNumberZ2)
 
CDart * isTopoEdgeOfCubeIMeshed (int ADim, CDart *ADart1, CDart *ADart2, int AS)
 
bool isTopoCube (CDart *ADart)
 
bool isTopoCube1Meshed (CDart *ADart, int ASx, int ASy, int ASz)
 
bool isTopoCube2Meshed (CDart *ADart, int ASx, int ASy, int ASz)
 
bool isTopoCube3Meshed (CDart *ADart, int ASx, int ASy, int ASz)
 
bool isTopoCubeIMeshed (int ADim, CDart *ADart, int ASx, int ASy, int ASz)
 
CDart * markTopoSquareIMeshed (int ADim, CDart *ADart, int ASx, int ASy, int AMarkNumberX, int AMarkNumberY, int AReturnedDart=3)
 
void markTopoCubeIMeshed (int ADim, CDart *ADart, int ASx, int ASy, int ASz, int AMarkNumberX, int AMarkNumberY, int AMarkNumberZ)
 
bool canMergeEdgeAndMesh1 (CDart *AEdgeDart, CDart *AMesh1Corners[2])
 
void mergeEdgeAndMesh1 (CDart *AEdgeDart, CDart *AMesh1Corners[2])
 
bool canMergeSquare1MeshedAndMesh2 (CDart *ASquareDart, CDart *AMesh2Dart, int ASx, int ASy)
 
void mergeSquare1MeshedAndMesh2 (CDart *ASquareDart, CDart *AMesh2Dart, int ASx, int ASy)
 
bool canMergeSquare2MeshedAndMesh3Side (CDart *ASquareDart, CDart *AMesh3Dart, int ASx, int ASy)
 
void mergeSquare2MeshedAndMesh3Side (CDart *ASquareDart, CDart *AMesh3Dart, int ASx, int ASy, CDart **ANextSquare=NULL, CDart **ANextMesh3Side=NULL)
 
bool canMergeCube2MeshedAndMesh3 (CDart *ACubeDart, CDart *AMesh3Dart, int ASx, int ASy, int ASz)
 
void mergeCube2MeshedAndMesh3 (CDart *ACubeDart, CDart *AMesh3Dart, int ASx, int ASy, int ASz)
 

Detailed Description

Definition at line 37 of file mesh-vertex.hh.

Constructor & Destructor Documentation

CMeshVertex::CMeshVertex ( CGMapVertex *  AMap)

Constructeur.

Definition at line 29 of file mv-instance.cc.

CMeshVertex::~CMeshVertex ( )

Destructeur.

Definition at line 36 of file mv-instance.cc.

Member Function Documentation

CVertex * CMeshVertex::allocVertexArray1 ( int  ADimX)

Alloue l'espace mémoire nécessaire pour stocker le plongement de ADimX sommets.

Parameters
ADimXLa taille du tableau
Returns
Un pointeur sur un tableau de ADimX sommets

Definition at line 30 of file mv-array-allocation.cc.

CVertex ** CMeshVertex::allocVertexArray2 ( int  ADimX,
int  ADimY 
)

Alloue l'espace mémoire nécessaire pour stocker le plongement de ADimX*ADimY sommets.

Parameters
ADimXLa première dimension du tableau
ADimYLa deuxième dimension du tableau
Returns
Un pointeur sur un tableau de ADimX*ADimY sommets

Definition at line 44 of file mv-array-allocation.cc.

CVertex *** CMeshVertex::allocVertexArray3 ( int  ADimX,
int  ADimY,
int  ADimZ 
)

Alloue l'espace mémoire nécessaire pour stocker le plongement de ADimX*ADimY*ADimZ sommets.

Parameters
ADimXLa première dimension du tableau
ADimYLa deuxième dimension du tableau
ADimZLa troisième dimension du tableau
Returns
Un pointeur sur un tableau de ADimX*ADimY*ADimZ sommets

Definition at line 67 of file mv-array-allocation.cc.

const CVertex ** CMeshVertex::allocVertexPtrArray1 ( int  ADimX)

Alloue l'espace mémoire nécessaire pour stocker ADimX pointeurs sur sommet.

Parameters
ADimXLa taille du tableau
Returns
Un pointeur sur un tableau de ADimX pointeurs sur sommets

Definition at line 92 of file mv-array-allocation.cc.

const CVertex *** CMeshVertex::allocVertexPtrArray2 ( int  ADimX,
int  ADimY 
)

Alloue l'espace mémoire nécessaire pour stocker ADimX*ADimY pointeurs sur sommets.

Parameters
ADimXLa première dimension du tableau
ADimYLa deuxième dimension du tableau
Returns
Un pointeur sur un tableau de ADimX*ADimY pointeurs sur sommets

Definition at line 106 of file mv-array-allocation.cc.

const CVertex **** CMeshVertex::allocVertexPtrArray3 ( int  ADimX,
int  ADimY,
int  ADimZ 
)

Alloue l'espace mémoire nécessaire pour stocker ADimX*ADimY*ADimZ pointeurs sur sommets.

Parameters
ADimXLa première dimension du tableau
ADimYLa deuxième dimension du tableau
ADimZLa troisième dimension du tableau
Returns
Un pointeur sur un tableau de ADimX*ADimY*ADimZ pointeurs sur sommets

Definition at line 130 of file mv-array-allocation.cc.

void CMeshVertex::freeVertexArray1 ( CVertex *  AArray1,
int  ADimX 
)

Libère l'espace mémoire occupé par AArray1.

Parameters
AArray1Un tableau créé avec la méthode 'allocVertexArray1'
ADimXLa taille du tableau

Definition at line 37 of file mv-array-allocation.cc.

void CMeshVertex::freeVertexArray2 ( CVertex **  AArray2,
int  ADimX,
int  ADimY 
)

Libère l'espace mémoire occupé par AArray2.

Parameters
AArray2Un tableau créé avec la méthode 'allocVertexArray2'
ADimXLa première dimension du tableau
ADimYLa deuxième dimension du tableau

Definition at line 57 of file mv-array-allocation.cc.

void CMeshVertex::freeVertexArray3 ( CVertex ***  AArray3,
int  ADimX,
int  ADimY,
int  ADimZ 
)

Libère l'espace mémoire occupé par AAray3.

Parameters
AArray3Un tableau créé avec la méthode 'allocVertexArray3'
ADimXLa première dimension du tableau
ADimYLa deuxième dimension du tableau
ADimZLa troisième dimension du tableau

Definition at line 81 of file mv-array-allocation.cc.

void CMeshVertex::freeVertexPtrArray1 ( const CVertex **  AArray1,
int  ADimX 
)

Libère l'espace mémoire occupé par AArray1.

Parameters
AArray1Un tableau créé avec la méthode 'allocVertexPtrArray1'
ADimXLa taille du tableau

Definition at line 99 of file mv-array-allocation.cc.

void CMeshVertex::freeVertexPtrArray2 ( const CVertex ***  AArray2,
int  ADimX,
int  ADimY 
)

Libère l'espace mémoire occupé par AArray2.

Parameters
AArray2Un tableau créé avec la méthode 'allocVertexPtrArray2'
ADimXLa première dimension du tableau
ADimYLa deuxième dimension du tableau

Definition at line 119 of file mv-array-allocation.cc.

void CMeshVertex::freeVertexPtrArray3 ( const CVertex ****  AArray3,
int  ADimX,
int  ADimY,
int  ADimZ 
)

Libère l'espace mémoire occupé par AArray3.

Parameters
AArray3Un tableau créé avec la méthode 'allocVertexPtrArray3'
ADimXLa première dimension du tableau
ADimYLa deuxième dimension du tableau
ADimZLa troisième dimension du tableau

Definition at line 144 of file mv-array-allocation.cc.

void CMeshVertex::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

Definition at line 94 of file mv-control-points.cc.

void CMeshVertex::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

Definition at line 38 of file mv-control-points.cc.

void CMeshVertex::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

Definition at line 164 of file mv-control-points.cc.

CDart * CMeshVertex::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

Definition at line 198 of file mv-control-points.cc.

CDart * CMeshVertex::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)

Definition at line 228 of file mv-control-points.cc.

void CMeshVertex::mesh1 ( CDart *  ADart,
int  ASx,
const CTransformationMatrix *  AMeshMatrix,
bool  AMeshWithMerges = true,
bool  AMeshWithAdjacentSews = true,
bool  AMeshAssociatedCells = false,
int  ADirectInfoAlpha0 = -1,
int  ADirectInfoAssoc = -1 
)
virtual

Surcharge la méthode CGMapGeneric::mesh1 pour plonger le maillage créé. Le plongement effectué est linéaire.

Pour plus d'informations sur les paramètres ADirectInfoAlpha0 et ADirectInfoAssoc, se reporter à la méthode 'CGMapGeneric::mesh1'. Pour plus d'informations concernant les champs AMeshWithMerges, AMeshWithAdjacentSews et AMeshAssociatedCells voir également cette méthode.

Parameters
ADartUn brin de l'arête à mailler
ASxLe nombre de mailles à créer
AMeshMatrixMatrice utilisée pour le calcul des plongements des cubiques
AMeshWithMergesUn booléen
AMeshWithAdjacentSewsUn booléen
AMeshAssociatedCellsUn booléen
ADirectInfoAlpha0Un indice de champ directInfo
ADirectInfoAssocUn indice de champ directInfo

ASx>0 canMesh1(ADart);

Reimplemented from GMap3d::CMeshGeneric.

Definition at line 31 of file mv-mesh.cc.

void CMeshVertex::mesh2 ( CDart *  ADart,
int  ASx,
int  ASy,
const CTransformationMatrix *  AMeshMatrix,
bool  AMeshWithMerges = true,
bool  AMeshWithAdjacentSews = true,
bool  AMeshAssociatedCells = false,
bool  AGetAssociatedEmbeddings = false,
int  AInitialMeshDim = 0,
int  AFinalMeshDim = 2,
int  ADirectInfoAlpha0 = -1,
int  ADirectInfoAssoc = -1 
)
virtual

Surcharge la méthode CGMapGeneric::mesh2 pour plonger le maillage créé. Le plongement effectué est linéaire.

Pour plus d'informations sur les paramètres ADirectInfoAlpha0 et ADirectInfoAssoc, se reporter à la méthode 'CGMapGeneric::mesh1'.

Parameters
ADartUn brin du carré à mailler
ASxLe nombre de mailles selon la première dimension
ASyLe nombre de mailles selon la deuxième dimension
AMeshMatrixMatrice utilisée pour le calcul des plongements des cubiques
AMeshWithMergesUn booléen
AMeshWithAdjacentSewsUn booléen
AMeshAssociatedCellsUn booléen
AGetAssociatedEmbeddingsUn booléen
AInitialMeshDimLa dimension dans laquelle le carré à mailler est déjà maillé (0 ou 1)
AFinalMeshDimLa dimension dans laquelle la cellule doit être maillée (1 ou 2)
ADirectInfoAlpha0Un indice de champ directInfo
ADirectInfoAssocUn indice de champ directInfo

ASx>0 ASy>0 AInitialMeshDim = 0 ou 1 AFinalMeshDim = 1 ou 2 AInitialMeshDim < AFinalMeshDim canMesh2(ADart, ASx,ASy, AInitialMeshDim);

Reimplemented from GMap3d::CMeshGeneric.

Definition at line 75 of file mv-mesh.cc.

void CMeshVertex::mesh3 ( CDart *  ADart,
int  ASx,
int  ASy,
int  ASz,
const CTransformationMatrix *  AMeshMatrix,
bool  AMeshWithMerges = true,
bool  AMeshWithAdjacentSews = true,
bool  AMeshAssociatedCells = false,
int  AInitialMeshDim = 0,
int  AFinalMeshDim = 3,
int  ADirectInfoAlpha0 = -1,
int  ADirectInfoAssoc = -1 
)
virtual

Surcharge la méthode CGMapGeneric::mesh3 pour plonger le maillage créé. Le plongement effectué est linéaire.

Pour plus d'informations sur les paramètres ADirectInfoAlpha0 et ADirectInfoAssoc, se reporter à la méthode 'CGMapGeneric::mesh3'.

Parameters
ADartUn brin du cube à mailler
ASxLe nombre de mailles selon la première dimension
ASyLe nombre de mailles selon la deuxième dimension
ASzLe nombre de mailles selon la troisième dimension
AMeshMatrixMatrice utilisée pour le calcul des plongements des cubiques
AMeshWithMergesUn booléen
AMeshWithAdjacentSewsUn booléen
AMeshAssociatedCellsUn booléen
AInitialMeshDimLa dimension dans laquelle le cube à mailler est déjà maillé (0, 1 ou 2)
AFinalMeshDimLa dimension dans laquelle la cellule doit être maillée (1, 2 ou 3)
ADirectInfoAlpha0Un indice de champ directInfo
ADirectInfoAssocUn indice de champ directInfo

ASx>0 ASy>0 ASz>0 AInitialMeshDim = 0, 1 ou 2 AFinalMeshDim = 1, 2 ou 3 AInitialMeshDim < AFinalMeshDim canMesh3(ADart, ASx,ASy,ASz, AInitialMeshDim);

Reimplemented from GMap3d::CMeshGeneric.

Definition at line 165 of file mv-mesh.cc.


The documentation for this class was generated from the following files: