Moka libraries
|
#include <mesh-vertex.hh>
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) |
Definition at line 37 of file mesh-vertex.hh.
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.
CVertex * CMeshVertex::allocVertexArray1 | ( | int | ADimX | ) |
Alloue l'espace mémoire nécessaire pour stocker le plongement de ADimX sommets.
ADimX | La taille du tableau |
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.
ADimX | La première dimension du tableau |
ADimY | La deuxième dimension du tableau |
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.
ADimX | La première dimension du tableau |
ADimY | La deuxième dimension du tableau |
ADimZ | La troisième dimension du tableau |
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.
ADimX | La taille du tableau |
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.
ADimX | La première dimension du tableau |
ADimY | La deuxième dimension du tableau |
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.
ADimX | La première dimension du tableau |
ADimY | La deuxième dimension du tableau |
ADimZ | La troisième dimension du tableau |
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.
AArray1 | Un tableau créé avec la méthode 'allocVertexArray1' |
ADimX | La 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.
AArray2 | Un tableau créé avec la méthode 'allocVertexArray2' |
ADimX | La première dimension du tableau |
ADimY | La 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.
AArray3 | Un tableau créé avec la méthode 'allocVertexArray3' |
ADimX | La première dimension du tableau |
ADimY | La deuxième dimension du tableau |
ADimZ | La 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.
AArray1 | Un tableau créé avec la méthode 'allocVertexPtrArray1' |
ADimX | La 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.
AArray2 | Un tableau créé avec la méthode 'allocVertexPtrArray2' |
ADimX | La première dimension du tableau |
ADimY | La 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.
AArray3 | Un tableau créé avec la méthode 'allocVertexPtrArray3' |
ADimX | La première dimension du tableau |
ADimY | La deuxième dimension du tableau |
ADimZ | La 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é.
ADart | Un brin de la carte |
AVertexArray | Un pointeur sur 4*4 sommets |
ADirectInfoAlpha0 | Un 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.
ADart | Un brin de la carte |
AVertexArray | Un pointeur sur 4 sommets |
ADirectInfoAlpha0 | Un 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é.
ADart | Un brin de la carte |
AVertexArray | Un pointeur sur 4*4*4 sommets |
ADirectInfoAlpha0 | Un 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'.
ADart | Un brin de la carte |
ASx | Le nombre de subdivisions du maillage 1d |
AVertexTable | Un tableau de pointeurs sur sommets |
AAlready2MeshedFace | Un booléen indiquant l'état de l'arête |
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
ADart | Un brin de la carte |
ASx | Le nombre de subdivisions du maillage selon la 1ère dimension |
ASy | Le nombre de subdivisions du maillage selon la 2ème dimension |
AVertexTable | Un tableau de pointeurs sur sommets |
AAlready3MeshedCube | Un booléen indiquant l'état de la face |
AReturnedDart | Un entier indiquant quel brin retourner |
AVertexTable est de dimension (ASx+1)*(ASy+1)
Definition at line 228 of file mv-control-points.cc.
|
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.
ADart | Un brin de l'arête à mailler |
ASx | Le nombre de mailles à créer |
AMeshMatrix | Matrice utilisée pour le calcul des plongements des cubiques |
AMeshWithMerges | Un booléen |
AMeshWithAdjacentSews | Un booléen |
AMeshAssociatedCells | Un booléen |
ADirectInfoAlpha0 | Un indice de champ directInfo |
ADirectInfoAssoc | Un indice de champ directInfo |
ASx>0 canMesh1(ADart);
Reimplemented from GMap3d::CMeshGeneric.
Definition at line 31 of file mv-mesh.cc.
|
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'.
ADart | Un brin du carré à mailler |
ASx | Le nombre de mailles selon la première dimension |
ASy | Le nombre de mailles selon la deuxième dimension |
AMeshMatrix | Matrice utilisée pour le calcul des plongements des cubiques |
AMeshWithMerges | Un booléen |
AMeshWithAdjacentSews | Un booléen |
AMeshAssociatedCells | Un booléen |
AGetAssociatedEmbeddings | Un booléen |
AInitialMeshDim | La dimension dans laquelle le carré à mailler est déjà maillé (0 ou 1) |
AFinalMeshDim | La dimension dans laquelle la cellule doit être maillée (1 ou 2) |
ADirectInfoAlpha0 | Un indice de champ directInfo |
ADirectInfoAssoc | Un 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.
|
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'.
ADart | Un brin du cube à mailler |
ASx | Le nombre de mailles selon la première dimension |
ASy | Le nombre de mailles selon la deuxième dimension |
ASz | Le nombre de mailles selon la troisième dimension |
AMeshMatrix | Matrice utilisée pour le calcul des plongements des cubiques |
AMeshWithMerges | Un booléen |
AMeshWithAdjacentSews | Un booléen |
AMeshAssociatedCells | Un booléen |
AInitialMeshDim | La dimension dans laquelle le cube à mailler est déjà maillé (0, 1 ou 2) |
AFinalMeshDim | La dimension dans laquelle la cellule doit être maillée (1, 2 ou 3) |
ADirectInfoAlpha0 | Un indice de champ directInfo |
ADirectInfoAssoc | Un 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.