Moka libraries
|
#include <mesh-generic.hh>
Public Member Functions | |
CMeshGeneric (CGMapGeneric *AMap) | |
Constructeur. | |
virtual | ~CMeshGeneric () |
Destructeur. | |
bool | canMesh1 (CDart *ADart) |
virtual void | mesh1 (CDart *ADart, int ASx, const CTransformationMatrix *AMeshMatrix=NULL, bool AMeshWithMerges=true, bool AMeshWithAdjacentSews=true, bool AMeshAssociatedCells=false, int ADirectInfoAlpha0=-1, int ADirectInfoAssoc=-1) |
bool | canMesh2 (CDart *ADart, int ASx, int ASy, int AInitialMeshDim=0) |
virtual void | mesh2 (CDart *ADart, int ASx, int ASy, const CTransformationMatrix *AMeshMatrix=NULL, bool AMeshWithMerges=true, bool AMeshWithAdjacentSews=true, bool AMeshAssociatedCells=false, bool AGetAssociatedEmbeddings=false, int AInitialMeshDim=0, int AFinalMeshDim=2, int ADirectInfoAlpha0=-1, int ADirectInfoAssoc=-1) |
bool | canMesh3 (CDart *ADart, int ASx, int ASy, int ASz, int AInitialMeshDim=0) |
virtual void | mesh3 (CDart *ADart, int ASx, int ASy, int ASz, const CTransformationMatrix *AMeshMatrix=NULL, bool AMeshWithMerges=true, bool AMeshWithAdjacentSews=true, bool AMeshAssociatedCells=false, int AInitialMeshDim=0, int AFinalMeshDim=3, int ADirectInfoAlpha0=-1, int ADirectInfoAssoc=-1) |
Méthodes de reconnaissance de cellules simples | |
Ces méthodes servent à tester s'il est possible de fusionner un maillage avec une cellule. | |
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-generic.hh.
CMeshGeneric::CMeshGeneric | ( | CGMapGeneric * | AMap | ) |
Constructeur.
Definition at line 29 of file mg-instance.cc.
|
virtual |
Destructeur.
Definition at line 35 of file mg-instance.cc.
bool CMeshGeneric::canMergeCube2MeshedAndMesh3 | ( | CDart * | ACubeDart, |
CDart * | AMesh3Dart, | ||
int | ASx, | ||
int | ASy, | ||
int | ASz | ||
) |
Teste si le maillage 3d incident à AMesh3Dart peut être fusionné avec le cube maillé 2d incident à ACubeDart. AMesh3Dart doit correspondre au brin AMesh3Corners[0][0][0] de la méthode 'createTopoMesh3'. Le principe est le même pour ACubeDart.
ACubeDart | Un brin du cube maillé 2d |
AMesh3Dart | Un brin du maillage 3d |
ASx | Le nombre de subdivisions du maillage 3d selon la première dimension |
ASy | Le nombre de subdivisions du maillage 3d selon la deuxième dimension |
ASz | Le nombre de subdivisions du maillage 3d selon la troisième dimension |
Definition at line 222 of file mg-merge.cc.
bool CMeshGeneric::canMergeEdgeAndMesh1 | ( | CDart * | AEdgeDart, |
CDart * | AMesh1Corners[2] | ||
) |
Teste si le maillage 1d d'extrémités AMesh1Corners[0] et AMesh1Corners[1] peut être fusionné avec l'arête donnée par le brin AEdgeDart.
AEdgeDart | Un brin de l'arête à mailler |
AMesh1Corners | Un tableau de 2 pointeurs sur les brins correspondant aux extrémités du maillage 1d à fusionner |
Definition at line 30 of file mg-merge.cc.
bool CMeshGeneric::canMergeSquare1MeshedAndMesh2 | ( | CDart * | ASquareDart, |
CDart * | AMesh2Dart, | ||
int | ASx, | ||
int | ASy | ||
) |
Teste si le maillage 2d incident à AMesh2Dart peut être fusionné avec le carré maillé 1d incident à ASquareDart. AMesh2Dart doit correspondre au brin AMesh2Corners[0][0] de la méthode 'createTopoMesh2'. Le principe est le même pour ASquareDart.
ASquareDart | Un brin du carré maillé 1d |
AMesh2Dart | Un brin du maillage 2d |
ASx | Le nombre de subdivisions du maillage 2d selon la première dimension |
ASy | Le nombre de subdivisions du maillage 2d selon la deuxième dimension |
Definition at line 67 of file mg-merge.cc.
bool CMeshGeneric::canMergeSquare2MeshedAndMesh3Side | ( | CDart * | ASquareDart, |
CDart * | AMesh3Dart, | ||
int | ASx, | ||
int | ASy | ||
) |
Teste si les ASx*ASy faces (correspondant à une face du maillage 3d) incidentes à AMesh3Dart peuvent être fusionnées avec le carré 2-maillé incident à ASquareDart. AMesh3Dart doit correspondre au brin AMesh3Corners[0][0][0] de la méthode 'createTopoMesh3' et ASquareDart au brin AMesh2Corners[0][0] de la méthode 'createTopoMesh2'.
ASquareDart | Un brin du carré maillé 2d |
AMesh3Dart | Un brin du maillage 3d |
ASx | Le nombre de subdivisions du maillage 2d selon la première dimension |
ASy | Le nombre de subdivisions du maillage 2d selon la deuxième dimension |
Definition at line 130 of file mg-merge.cc.
bool CMeshGeneric::canMesh1 | ( | CDart * | ADart | ) |
Teste s'il est possible de mailler l'arête incidente à ADart.
ADart | Un brin de la carte |
Definition at line 30 of file mg-mesh.cc.
bool CMeshGeneric::canMesh2 | ( | CDart * | ADart, |
int | ASx, | ||
int | ASy, | ||
int | AInitialMeshDim = 0 |
||
) |
Teste s'il est possible de 2-mailler le carré incident à ADart. Si AInitialMeshDim vaut 0, on teste si la cellule incidente à ADart est un carré (4 arêtes). Si AInitialMeshDim vaut 1, on teste si la cellule incidente à ADart est un carré 1-maillé (2*(ASx+ASy) arêtes).
ADart | Un brin de la carte |
ASx | Le nombre de subdivisions à créer selon la première dimension |
ASy | Le nombre de subdivisions à créer selon la deuxième dimension |
AInitialMeshDim | La dimension dans laquelle le carré à mailler est déjà maillé (0 ou 1) |
ASx>0 ASy>0 AInitialMeshDim = 0 ou 1
Definition at line 83 of file mg-mesh.cc.
bool CMeshGeneric::canMesh3 | ( | CDart * | ADart, |
int | ASx, | ||
int | ASy, | ||
int | ASz, | ||
int | AInitialMeshDim = 0 |
||
) |
Teste s'il est possible de 3-mailler le cube incident à ADart. Si AInitialMeshDim vaut 0, on teste si la cellule incidente à ADart est un cube (6 faces). Si AInitialMeshDim vaut 1, on teste si la cellule incidente à ADart est un cube 1-maillé. Si AInitialMeshDim vaut 2, on teste si la cellule incidente à ADart est un cube 2-maillé.
ADart | Un brin de la carte |
ASx | Le nombre de subdivisions à créer selon la 1ère dimension |
ASy | Le nombre de subdivisions à créer selon la 2ème dimension |
ASz | Le nombre de subdivisions à créer selon la 3ème dimension |
AInitialMeshDim | La dimension dans laquelle le cube à mailler est déjà maillé (0, 1 ou 2) |
ASx>0 ASy>0 ASz>0 AInitialMeshDim = 0, 1 ou 2
Definition at line 149 of file mg-mesh.cc.
bool CMeshGeneric::isFreeTopoCubeIMeshed | ( | int | ADim, |
CDart * | ADart, | ||
int | ASx, | ||
int | ASy, | ||
int | ASz, | ||
int | AMarkNumberNotX1, | ||
int | AMarkNumberNotX2, | ||
int | AMarkNumberNotY1, | ||
int | AMarkNumberNotY2, | ||
int | AMarkNumberZ1, | ||
int | AMarkNumberZ2 | ||
) |
Cette méthode prend en paramètre un brin incident à un cube maillé en dimension ADim. Le bord de ce cube est composé de 12 polyarêtes. La méthode vérifie qu'aucune arête de la première dimension n'est marquée avec la marque AMarkNumberNotX1 (ou avec la marque AMarkNumberNotX2 si elle est positive ou nulle), qu'aucune arête de la deuxième dimension n'est marquée avec la marque AMarkNumberNotY1 (ou avec la marque AMarkNumberNotY2 si elle est positive ou nulle) et qu'aucune arête de la troisième dimension n'est marquée avec la marque AMarkNumberNotZ1 (ou avec la marque AMarkNumberNotZ2 si elle est positive ou nulle). Pour tester si une arête est marquée ou pas, on ne teste les marques que d'un seul de ses brins. Les arêtes doivent donc être soit totalement marquées soit totalement démarquées.
Cette méthode est utilisée par 'meshMarkedCubes', en association avec la méthode 'markTopoCubeIMeshed'.
ADim | Une dimension (0, 1 ou 2) |
ADart | Un brin de la carte |
ASx | Le nombre de subdivisions selon la première dimension |
ASy | Le nombre de subdivisions selon la deuxième dimension |
ASz | Le nombre de subdivisions selon la troisième dimension |
AMarkNumberNotX1 | Un numéro de marque pour les arêtes de la première dimension |
AMarkNumberNotX2 | Un numéro de marque pour les arêtes de la première dimension |
AMarkNumberNotY1 | Un numéro de marque pour les arêtes de la deuxième dimension |
AMarkNumberNotY2 | Un numéro de marque pour les arêtes de la deuxième dimension |
AMarkNumberNotZ1 | Un numéro de marque pour les arêtes de la troisième dimension |
AMarkNumberNotZ2 | Un numéro de marque pour les arêtes de la troisième dimension |
Definition at line 491 of file mg-cell-identification.cc.
bool CMeshGeneric::isFreeTopoSquareIMeshed | ( | int | ADim, |
CDart * | ADart, | ||
int | ASx, | ||
int | ASy, | ||
int | AMarkNumberNotX1, | ||
int | AMarkNumberNotX2, | ||
int | AMarkNumberNotY1, | ||
int | AMarkNumberNotY2, | ||
int | AReturnedDart = 3 , |
||
CDart ** | AOppositeDart = NULL |
||
) |
Cette méthode prend en paramètre un brin incident à un carré maillé en dimension ADim. Le bord de ce carré est composé de 4 polyarêtes. La méthode vérifie qu'aucune arête horizontale n'est marquée avec la marque AMarkNumberNotX1 (ou avec la marque AMarkNumberNotX2 si elle est positive ou nulle) et qu'aucune arête verticale n'est marquée avec la marque AMarkNumberNotY1 (ou avec la marque AMarkNumberNotY2 si elle est positive ou nulle). Pour tester si une arête est marquée ou pas, on ne teste les marques que d'un seul de ses brins. Les arêtes doivent donc être soit totalement marquées soit totalement démarquées.
Cette méthode est utilisée par 'meshMarkedSquares', en association avec la méthode 'markTopoSquareIMeshed'.
2==AReturnedDart AReturnedDart==3 +** –+– –+– **+ | | | | | | | | +– –+– –+– –+ | | | | | | | | +** –+– –+– **+ ADart AReturnedDart==1
ADim | Une dimension (0, 1 ou 2) |
ADart | Un brin de la carte |
ASx | Le nombre de subdivisions selon la première dimension |
ASy | Le nombre de subdivisions selon la deuxième dimension |
AMarkNumberNotX1 | Un numéro de marque pour les arêtes horizontales |
AMarkNumberNotX2 | Un numéro de marque pour les arêtes horizontales |
AMarkNumberNotY1 | Un numéro de marque pour les arêtes verticales |
AMarkNumberNotY2 | Un numéro de marque pour les arêtes verticales |
AReturnedDart | Un entier indiquant quel brin retourner |
AOppositeDart | Un brin situé sur un autre coin du maillage, dépendant de la valeur de AReturnedDart (voir schéma) |
Definition at line 208 of file mg-cell-identification.cc.
bool CMeshGeneric::isTopoCube | ( | CDart * | ADart | ) |
Teste si le volume incident à ADart est fermé et constitué de 6 faces carrées formant un cube simple.
ADart | Un brin de la carte |
Definition at line 322 of file mg-cell-identification.cc.
bool CMeshGeneric::isTopoCube1Meshed | ( | CDart * | ADart, |
int | ASx, | ||
int | ASy, | ||
int | ASz | ||
) |
Teste si le volume incident à ADart est un cube maillé 1d selon les valeurs de ASx, ASy et ASz.
ADart doit être situé dans un coin du maillage et dirigé selon la première dimension (comme l'est le brin AMesh3Corners[0][0][0] de la méthode 'createTopoMesh3').
ADart | Un brin de la carte |
ASx | Le nombre de subdivisions selon la première dimension |
ASy | Le nombre de subdivisions selon la deuxième dimension |
ASz | Le nombre de subdivisions selon la troisième dimension |
Definition at line 329 of file mg-cell-identification.cc.
bool CMeshGeneric::isTopoCube2Meshed | ( | CDart * | ADart, |
int | ASx, | ||
int | ASy, | ||
int | ASz | ||
) |
Teste si le volume incident à ADart est un cube maillé 2d selon les valeurs de ASx, ASy et ASz.
ADart doit être situé dans un coin du maillage et dirigé selon la première dimension (comme l'est le brin AMesh3Corners[0][0][0] de la méthode 'createTopoMesh3').
ADart | Un brin de la carte |
ASx | Le nombre de subdivisions selon la première dimension |
ASy | Le nombre de subdivisions selon la deuxième dimension |
ASz | Le nombre de subdivisions selon la troisième dimension |
Definition at line 339 of file mg-cell-identification.cc.
bool CMeshGeneric::isTopoCube3Meshed | ( | CDart * | ADart, |
int | ASx, | ||
int | ASy, | ||
int | ASz | ||
) |
Teste si le volume incident à ADart est un cube maillé 3d selon les valeurs de ASx, ASy et ASz.
ADart doit être situé dans un coin du maillage et dirigé selon la première dimension (comme l'est le brin AMesh2Corners[0][0][0] de la méthode 'createTopoMesh3').
ADart | Un brin de la carte |
ASx | Le nombre de subdivisions selon la première dimension |
ASy | Le nombre de subdivisions selon la deuxième dimension |
ASz | Le nombre de subdivisions selon la troisième dimension |
Definition at line 349 of file mg-cell-identification.cc.
bool CMeshGeneric::isTopoCubeIMeshed | ( | int | ADim, |
CDart * | ADart, | ||
int | ASx, | ||
int | ASy, | ||
int | ASz | ||
) |
Teste si le volume incident à ADart est un cube maillé en dimension ADim selon les valeurs de ASx, ASy et ASz.
ADart doit être situé dans un coin du maillage et dirigé selon la première dimension (comme l'est le brin AMesh3Corners[0][0][0] de la méthode 'createTopoMesh3').
Si ADim vaut 0, les valeurs de ASx, ASy et ASz ne sont pas prises en compte.
ADim | Une dimension (0, 1, 2 ou 3) |
ADart | Un brin de la carte |
ASx | Le nombre de subdivisions selon la première dimension |
ASy | Le nombre de subdivisions selon la deuxième dimension |
ASz | Le nombre de subdivisions selon la troisième dimension |
Definition at line 407 of file mg-cell-identification.cc.
bool CMeshGeneric::isTopoEdge | ( | CDart * | ADart, |
CDart * | AModel = NULL |
||
) |
Teste si l'arête incidente à ADart est constituée de deux sommets.
Si AModel est non NULL, la méthode vérifie en plus que ADart et AModel ont bien des orbites 23 similaires.
ADart | Un brin de la carte |
AModel | Un brin de la carte |
Definition at line 33 of file mg-cell-identification.cc.
bool CMeshGeneric::isTopoEdge1Meshed | ( | CDart * | ADart, |
int | ASx, | ||
CDart * | AModel = NULL |
||
) |
Teste si la face incidente à ADart est bien constituée de ASx arêtes (au moins) toutes 0-cousues. Attention: ADart doit être situé à l'extrémité de la polyligne.
Si AModel est non NULL, la méthode vérifie que les brins de l'orbite 01 partant de ADart ont bien des orbites 23 similaires avec celle de AModel. Si AModel est NULL, aucune vérification n'est faite sur les orbites 23.
ADart | Un brin de la carte |
ASx | Le nombre de subdivisions |
AModel | Un brin de la carte |
Definition at line 39 of file mg-cell-identification.cc.
bool CMeshGeneric::isTopoEdgeIMeshed | ( | int | ADim, |
CDart * | ADart, | ||
int | AS = 1 , |
||
CDart * | AModel = NULL |
||
) |
Cette méthode est fournie dans le but de faciliter l'exploitation du noyau. Elle appelle simplement l'une des méthodes 'isTopoEdge' ou 'isTopoEdge1Meshed' en fonction de la valeur de ADim. Si ADim vaut 0, la valeur de AS n'est pas prise en compte.
ADim | Une dimension (0 ou 1) |
ADart | Un brin de la carte |
ASx | Le nombre de subdivisions |
AModel | Un brin de la carte |
Definition at line 76 of file mg-cell-identification.cc.
CDart * CMeshGeneric::isTopoEdgeOfCubeIMeshed | ( | int | ADim, |
CDart * | ADart1, | ||
CDart * | ADart2, | ||
int | AS | ||
) |
Cette méthode teste si les brins ADart1 et ADart2 sont bien de part et d'autre (c'est-à-dire 2-cousus) d'une arête d'un cube maillé. Le test est effectué sur AS arêtes consécutives.
ADim | Une dimension (1 ou 2) |
ADart1 | Un brin de la carte |
ADart2 | Un brin de la carte |
AS | Le nombre de subdivisions de l'arête |
Definition at line 293 of file mg-cell-identification.cc.
bool CMeshGeneric::isTopoSquare | ( | CDart * | ADart, |
bool | ACheck3Sews = false , |
||
bool | A3Sewed = false |
||
) |
Teste si la face incidente à ADart est fermée et constituée de 4 arêtes. Si ACheck3Sews est vrai, tous les brins B de la face doivent vérifier isFree3(B) != A3Sewed. Si ACheck3Sews est faux, la vérification sur les 3-coutures n'est pas faite (la valeur de A3Sewed n'est pas prise en compte).
ADart | Un brin de la carte |
ACheck3Sews | Un booléen indiquant s'il faut vérifier l'état des 3-coutures |
A3Sewed | Un booléen indiquant si le carré doit être 3-cousu |
Definition at line 89 of file mg-cell-identification.cc.
bool CMeshGeneric::isTopoSquare1Meshed | ( | CDart * | ADart, |
int | ASx, | ||
int | ASy, | ||
bool | ACheck3Sews = false , |
||
bool | A3Sewed = false |
||
) |
Teste si la face incidente à ADart est fermée et constituée de 2*(ASx+ASy) arêtes. Si ACheck3Sews est vrai, alors: Si A3Sewed vaut 'vrai', la face doit être 3-cousue. Si A3Sewed vaut 'faux', la face doit ne pas être 3-cousue. Si ACheck3Sews est faux, la vérification sur les 3-coutures n'est pas faite (la valeur de A3Sewed n'est pas prise en compte).
ADart | Un brin de la carte |
ASx | Le nombre de subdivisions selon la première dimension |
ASy | Le nombre de subdivisions selon la deuxième dimension |
ACheck3Sews | Un booléen indiquant s'il faut vérifier l'état des 3-coutures |
A3Sewed | Un booléen indiquant si la face doit être 3-cousue |
Definition at line 95 of file mg-cell-identification.cc.
bool CMeshGeneric::isTopoSquare2Meshed | ( | CDart * | ADart, |
int | ASx, | ||
int | ASy, | ||
bool | ACheck3Sews = false , |
||
bool | A3Sewed = false |
||
) |
Teste si la grille incidente à ADart est constituée de ASx*ASy carrés au moins.
ADart doit être situé dans un coin du maillage et dirigé selon la première dimension (comme l'est le brin AMesh2Corners[0][0] de la méthode 'createTopoMesh2').
Si ACheck3Sews est vrai, alors: Si A3Sewed vaut 'vrai', toutes les faces du maillage doivent être 3-cousues. Si A3Sewed vaut 'faux', toutes les faces du maillage doivent être 3-libres. Si ACheck3Sews est faux, la vérification sur les 3-coutures n'est pas faite (la valeur de A3Sewed n'est pas prise en compte).
ADart | Un brin de la carte |
ASx | Le nombre de subdivisions selon la première dimension |
ASy | Le nombre de subdivisions selon la deuxième dimension |
ACheck3Sews | Un booléen indiquant s'il faut vérifier l'état des 3-coutures |
A3Sewed | Un booléen indiquant si les faces du maillage doivent être 3-cousues |
Definition at line 120 of file mg-cell-identification.cc.
bool CMeshGeneric::isTopoSquare3Meshed | ( | CDart * | ADart, |
int | ASx, | ||
int | ASy, | ||
bool | ACheck3Sews = false , |
||
bool | A3Sewed = false |
||
) |
Teste si la grille incidente à ADart est constituée de ASx*ASy carrés au moins correspondant à une face d'un cube 3-maillé.
ADart doit être situé dans un coin du maillage et dirigé selon la première dimension (comme l'est le brin AMesh2Corners[0][0] de la méthode 'createTopoMesh2').
Si ACheck3Sews est vrai, alors: Si A3Sewed vaut 'vrai', toutes les faces du maillage doivent être 3-cousues. Si A3Sewed vaut 'faux', toutes les faces du maillage doivent être 3-libres. Si ACheck3Sews est faux, la vérification sur les 3-coutures n'est pas faite (la valeur de A3Sewed n'est pas prise en compte).
ADart | Un brin de la carte |
ASx | Le nombre de subdivisions selon la première dimension |
ASy | Le nombre de subdivisions selon la deuxième dimension |
ACheck3Sews | Un booléen indiquant s'il faut vérifier l'état des 3-coutures |
A3Sewed | Un booléen indiquant si les faces du maillage doivent être 3-cousues |
Definition at line 130 of file mg-cell-identification.cc.
bool CMeshGeneric::isTopoSquareIMeshed | ( | int | ADim, |
CDart * | ADart, | ||
int | ASx = 1 , |
||
int | ASy = 1 , |
||
bool | ACheck3Sews = false , |
||
bool | A3Sewed = false |
||
) |
Cette méthode permet de tester dans n'importe quelle dimension si un carré est maillé.
Elle appelle simplement l'une des méthodes 'isTopoSquare' ou 'isTopoSquare1Meshed' si ADim<2. Sinon, elle teste si le carré est 2 ou 3 maillé. L'algorithme est le même que le cube soit 2 ou 3 maillé, sinon que dans un cas on passe d'un carré à son successeur par la fonction alpha0121 (ADim==2) et dans l'autre par la fonction alpha012321 (ADim==3).
ADim | Une dimension (0, 1, 2 ou 3) |
ADart | Un brin de la carte |
ASx | Le nombre de subdivisions selon la première dimension |
ASy | Le nombre de subdivisions selon la deuxième dimension |
ACheck3Sews | Un booléen indiquant s'il faut vérifier l'état des 3-coutures |
A3Sewed | Un booléen indiquant si la face doit être 3-cousue |
Definition at line 140 of file mg-cell-identification.cc.
void CMeshGeneric::markTopoCubeIMeshed | ( | int | ADim, |
CDart * | ADart, | ||
int | ASx, | ||
int | ASy, | ||
int | ASz, | ||
int | AMarkNumberX, | ||
int | AMarkNumberY, | ||
int | AMarkNumberZ | ||
) |
Cette méthode prend en paramètre un brin incident à un cube maillé en dimension ADim. Le bord de ce carré est composé de 12 polyarêtes. La méthode marque les arêtes de ce cube avec les marques AMarkNumberX, AMarkNumberY et AMarkNumberZ.
Cette méthode est utilisée par 'meshMarkedCubes', en association avec la méthode 'isFreeTopoCubeIMeshed'.
ADim | Une dimension (0, 1, 2 ou 3) |
ADart | Un brin de la carte |
ASx | Le nombre de subdivisions selon la première dimension |
ASy | Le nombre de subdivisions selon la deuxième dimension |
ASz | Le nombre de subdivisions selon la troisième dimension |
AMarkNumberX | Un numéro de marque pour les arêtes de la première dimension |
AMarkNumberY | Un numéro de marque pour les arêtes de la deuxième dimension |
AMarkNumberZ | Un numéro de marque pour les arêtes de la troisième dimension |
Definition at line 91 of file mg-selection.cc.
CDart * CMeshGeneric::markTopoSquareIMeshed | ( | int | ADim, |
CDart * | ADart, | ||
int | ASx, | ||
int | ASy, | ||
int | AMarkNumberX, | ||
int | AMarkNumberY, | ||
int | AReturnedDart = 3 |
||
) |
Cette méthode prend en paramètre un brin incident à un carré maillé en dimension ADim. Le bord de ce carré est composé de 4 polyarêtes. La méthode marque les arêtes horizontales de ce carré avec la marque AMarkNumberX et les arêtes verticales avec la marque AMarkNumberY.
Cette méthode est utilisée par 'meshMarkedSquares', en association avec la méthode 'isFreeTopoSquareIMeshed'.
2==AReturnedDart AReturnedDart==3 +** –+– –+– **+ | | | | | | | | +– –+– –+– –+ | | | | | | | | +** –+– –+– **+ ADart AReturnedDart==1
ADim | Une dimension (0, 1 ou 2) |
ADart | Un brin de la carte |
ASx | Le nombre de subdivisions selon la première dimension |
ASy | Le nombre de subdivisions selon la deuxième dimension |
AMarkNumberX | Un numéro de marque pour les arêtes horizontales |
AMarkNumberY | Un numéro de marque pour les arêtes verticales |
AReturnedDart | Un entier indiquant quel brin retourner |
Definition at line 32 of file mg-selection.cc.
void CMeshGeneric::mergeCube2MeshedAndMesh3 | ( | CDart * | ACubeDart, |
CDart * | AMesh3Dart, | ||
int | ASx, | ||
int | ASy, | ||
int | ASz | ||
) |
Fusionne un maillage 3d avec un cube maillé 2d. Les brins supprimés dans la fusion sont ceux situés au bord du maillage 3d. Aucun brin du cube 2-maillé n'est supprimé.
ACubeDart | Un brin du cube maillé 2d |
AMesh3Dart | Un brin du maillage 3d |
ASx | Le nombre de subdivisions du maillage 3d selon la première dimension |
ASy | Le nombre de subdivisions du maillage 3d selon la deuxième dimension |
ASz | Le nombre de subdivisions du maillage 3d selon la troisième dimension |
canMergeCubeMeshed2AndMesh3(ACubeDart, AMesh3Dart, ASx,ASy,ASz)
Definition at line 237 of file mg-merge.cc.
void CMeshGeneric::mergeEdgeAndMesh1 | ( | CDart * | AEdgeDart, |
CDart * | AMesh1Corners[2] | ||
) |
Fusionne un maillage 1d avec une arête. Les brins supprimés dans la fusion sont ceux situés aux extrémités du maillage 1d. Aucun brin de l'arête n'est supprimé.
AEdgeDart | Un brin de l'arête à mailler |
AMesh1Corners | Un tableau de 2 pointeurs sur les brins correspondant aux extrémités du maillage 1d à fusionner avec l'arête |
canMergeEdgeAndMesh1(AEdgeDart, AMesh1Corners)
Definition at line 43 of file mg-merge.cc.
void CMeshGeneric::mergeSquare1MeshedAndMesh2 | ( | CDart * | ASquareDart, |
CDart * | AMesh2Dart, | ||
int | ASx, | ||
int | ASy | ||
) |
Fusionne un maillage 2d avec une face carrée 1-maillée. Les brins supprimés dans la fusion sont ceux situés au bord du maillage 2d. Aucun brin du carré 1-maillé n'est supprimé.
ASquareDart | Un brin du carré maillé 1d |
AMesh2Dart | Un brin du maillage 2d |
ASx | Le nombre de subdivisions du maillage 2d selon la première dimension |
ASy | Le nombre de subdivisions du maillage 2d selon la deuxième dimension |
canMergeSquare1MeshedAndMesh2(ASquareDart, AMesh2Dart, ASx,ASy)
Definition at line 83 of file mg-merge.cc.
void CMeshGeneric::mergeSquare2MeshedAndMesh3Side | ( | CDart * | ASquareDart, |
CDart * | AMesh3Dart, | ||
int | ASx, | ||
int | ASy, | ||
CDart ** | ANextSquare = NULL , |
||
CDart ** | ANextMesh3Side = NULL |
||
) |
Fusionne un côté d'un maillage 3d avec une face carrée 2-maillée. Les brins supprimés dans la fusion sont ceux situés au bord du maillage 3d. Aucun brin du carré 2-maillé n'est supprimé.
ASx=3, ASy=2
| | | | +-- --+-- --+-- ==+ ANextSquare +-- --+-- --+-- --+ | | | | | | | | +-- --+-- --+-- --+ | | | | | | | | +== --+-- --+-- --+
ASquareDart
Remarque: Après la fusion, toutes les faces du maillage 2d se retrouvent sur des volumes (des cubes) différents.
Si ANextSquare n'est pas égal à NULL, il est positionné sur un brin correspondant initialement à l'alpha2 du brin situé à l'autre extrémité de ASquareDart (voir schéma). Si ANextMesh3Side n'est pas égal à NULL, il est positionné sur l'homologue de ANextSquare sur le maillage 3d.
Ces paramètres en sortie permettent de poursuivre la fusion sur d'autres versants du maillage 3d (voir la méthode 'mergeCube2MeshedAndMesh3').
ASquareDart | Un brin du carré maillé 2d |
AMesh3Dart | Un brin du maillage 3d |
ASx | Le nombre de subdivisions du maillage 2d selon la première dimension |
ASy | Le nombre de subdivisions du maillage 2d selon la deuxième dimension |
ANextSquare | L'alpha2 du brin situé dans le coin opposé à ASquareDart sur le carré 2-maillé (paramètre en sortie) |
ANextMesh3Side | L'homologue de ANextSquare sur le maillage 3d (paramètre en sortie) |
canMergeSquare2MeshedAndMesh3(ASquareDart, AMesh3Dart, ASx,ASy)
Definition at line 144 of file mg-merge.cc.
|
virtual |
Maille l'arête incidente à ADart. L'arête est donc découpée en ASx arêtes.
Si ADirectInfoAlpha0 est positif ou nul, il indique un champ directInfo où sont mémorisés les images par alpha0 des brins tels qu'elles étaient avant le maillage. Ceci est utile lorsqu'on maille plusieurs arêtes en parallèle (méthode 'meshMarkedEdges'). Au moment du plongement (effectué par la méthode 'CGMapVertex::mesh1', cela permet de récupérer facilement les points de contrôle dont on alpha besoin sans avoir à parcourir complètement les arêtes déjà 1-maillées.
Si ADirectInfoAssoc est positif ou nul, il indique un champ directInfo où sont mémorisées les extrémités du maillage créé. Ceci permet d'accéder au maillage d'une arête déjà traitée.
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 indiquant la manière dont sont effectuées les maillages de cellules. Si vrai, les maillages créés sont fusionnés aux cellules auquelles ils correspondent. Sinon, les maillages restent indépendants des cellules à partir desquelles ils ont été créés. |
AMeshWithAdjacentSews | Un booléen indiquant la manière dont sont effectuées les maillages de cellules. Si 'vrai', les maillages de cellules adjacentes créés en parallèle sont cousus entre eux. Sinon les maillages créés restent isolés. |
AMeshAssociatedCells | Un booléen indiquant si les cellules associées sont maillées ou non. |
ADirectInfoAlpha0 | Un indice de champ directInfo |
ADirectInfoAssoc | Un indice de champ directInfo |
canMesh1(ADart); ASx>0 ADirectInfoAlpha0>=0 => FMeshWithMerges ADirectInfoAssoc >=0 => !FMeshWithMerges
Reimplemented in GMap3d::CMeshVertex.
Definition at line 36 of file mg-mesh.cc.
|
virtual |
Maille le carré incident à ADart, de la dimension AInitialMeshDim vers la dimension AFinalMeshDim.
Possibilités: AInitialMeshDim==0, AFinalMeshDim==1 : Maillage 1d des arêtes d'un carré AInitialMeshDim==0, AFinalMeshDim==2 : Maillage 2d d'un carré AInitialMeshDim==1, AFinalMeshDim==2 : Maillage 2d d'un carré 1-maillé
ADart doit correspondre au brin AMesh2Corners[0][0] de la méthode 'createTopoMesh2'.
Pour plus d'informations concernant les champs ADirectInfoAlpha0 et ADirectInfoAssoc, se reporter à la méthode 'mesh1'. Pour plus d'informations concernant les champs AMeshWithMerges, AMeshWithAdjacentSews et AMeshAssociatedCells voir la méthode 'mesh1'.
ADart | Un brin du carré à mailler |
ASx | Le nombre de mailles à créer selon la première dimension |
ASy | Le nombre de mailles à créer 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 du maillage de la cellule de départ (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 in GMap3d::CMeshVertex.
Definition at line 95 of file mg-mesh.cc.
|
virtual |
Maille le cube incident à ADart, de la dimension AInitialMeshDim vers la dimension AFinalMeshDim.
Possibilités: AInitialMeshDim == 0, AFinalMeshDim == 1 : Maillage 1d des arêtes d'un cube AInitialMeshDim == 0, AFinalMeshDim == 2 : Maillage 2d des faces d'un cube AInitialMeshDim == 0, AFinalMeshDim == 3 : Maillage 3d d'un cube AInitialMeshDim == 1, AFinalMeshDim == 2 : Maillage 2d des faces d'un cube 1-maillé AInitialMeshDim == 1, AFinalMeshDim == 3 : Maillage 3d d'un cube 1-maillé AInitialMeshDim == 2, AFinalMeshDim == 3 : Maillage 3d d'un cube 2-maillé
ADart doit correspondre au brin AMesh3Corners[0][0][0] de la méthode 'createTopoMesh3'.
Pour plus d'informations concernant les champs ADirectInfoAlpha0 et ADirectInfoAssoc, se reporter à la méthode 'mesh1'. Pour plus d'informations concernant les champs AMeshWithMerges, AMeshWithAdjacentSews et AMeshAssociatedCells voir la méthode 'mesh1'.
ADart | Un brin du cube à mailler |
ASx | Le nombre de mailles à créer selon la première dimension |
ASy | Le nombre de mailles à créer selon la deuxième dimension |
ASz | Le nombre de mailles à créer 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 du maillage de la cellule de départ (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 ou 1 AFinalMeshDim = 1 ou 2 AInitialMeshDim < AFinalMeshDim canMesh3(ADart, ASx,ASy,ASz, AInitialMeshDim)
Reimplemented in GMap3d::CMeshVertex.
Definition at line 161 of file mg-mesh.cc.