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

#include <mesh-generic.hh>

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

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)
 

Detailed Description

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

Constructor & Destructor Documentation

CMeshGeneric::CMeshGeneric ( CGMapGeneric *  AMap)

Constructeur.

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

CMeshGeneric::~CMeshGeneric ( )
virtual

Destructeur.

Definition at line 35 of file mg-instance.cc.

Member Function Documentation

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.

Parameters
ACubeDartUn brin du cube maillé 2d
AMesh3DartUn brin du maillage 3d
ASxLe nombre de subdivisions du maillage 3d selon la première dimension
ASyLe nombre de subdivisions du maillage 3d selon la deuxième dimension
ASzLe nombre de subdivisions du maillage 3d selon la troisième dimension
Returns
'vrai' si la fusion est possible

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.

Parameters
AEdgeDartUn brin de l'arête à mailler
AMesh1CornersUn tableau de 2 pointeurs sur les brins correspondant aux extrémités du maillage 1d à fusionner
Returns
'vrai' si la fusion est possible

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.

Parameters
ASquareDartUn brin du carré maillé 1d
AMesh2DartUn brin du maillage 2d
ASxLe nombre de subdivisions du maillage 2d selon la première dimension
ASyLe nombre de subdivisions du maillage 2d selon la deuxième dimension
Returns
'vrai' si la fusion est possible

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'.

Parameters
ASquareDartUn brin du carré maillé 2d
AMesh3DartUn brin du maillage 3d
ASxLe nombre de subdivisions du maillage 2d selon la première dimension
ASyLe 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.

Parameters
ADartUn brin de la carte
Returns
'vrai' si l'arête incidente à ADart peut être maillée

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).

Parameters
ADartUn brin de la carte
ASxLe nombre de subdivisions à créer selon la première dimension
ASyLe nombre de subdivisions à créer selon la deuxième dimension
AInitialMeshDimLa 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é.

Parameters
ADartUn brin de la carte
ASxLe nombre de subdivisions à créer selon la 1ère dimension
ASyLe nombre de subdivisions à créer selon la 2ème dimension
ASzLe nombre de subdivisions à créer selon la 3ème dimension
AInitialMeshDimLa 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'.

Parameters
ADimUne dimension (0, 1 ou 2)
ADartUn brin de la carte
ASxLe nombre de subdivisions selon la première dimension
ASyLe nombre de subdivisions selon la deuxième dimension
ASzLe nombre de subdivisions selon la troisième dimension
AMarkNumberNotX1Un numéro de marque pour les arêtes de la première dimension
AMarkNumberNotX2Un numéro de marque pour les arêtes de la première dimension
AMarkNumberNotY1Un numéro de marque pour les arêtes de la deuxième dimension
AMarkNumberNotY2Un numéro de marque pour les arêtes de la deuxième dimension
AMarkNumberNotZ1Un numéro de marque pour les arêtes de la troisième dimension
AMarkNumberNotZ2Un numéro de marque pour les arêtes de la troisième dimension
Returns
Un booléen indiquant si le cube est libre

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

Parameters
ADimUne dimension (0, 1 ou 2)
ADartUn brin de la carte
ASxLe nombre de subdivisions selon la première dimension
ASyLe nombre de subdivisions selon la deuxième dimension
AMarkNumberNotX1Un numéro de marque pour les arêtes horizontales
AMarkNumberNotX2Un numéro de marque pour les arêtes horizontales
AMarkNumberNotY1Un numéro de marque pour les arêtes verticales
AMarkNumberNotY2Un numéro de marque pour les arêtes verticales
AReturnedDartUn entier indiquant quel brin retourner
AOppositeDartUn brin situé sur un autre coin du maillage, dépendant de la valeur de AReturnedDart (voir schéma)
Returns
Un booléen indiquant si le carré (orbite 01) est libre

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.

Parameters
ADartUn brin de la carte
Returns
Un booléen indiquant si le volume incident à ADart est un cube

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').

Parameters
ADartUn brin de la carte
ASxLe nombre de subdivisions selon la première dimension
ASyLe nombre de subdivisions selon la deuxième dimension
ASzLe nombre de subdivisions selon la troisième dimension
Returns
Un booléen indiquant si le volume incident à ADart est un cube dont les arêtes sont maillées

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').

Parameters
ADartUn brin de la carte
ASxLe nombre de subdivisions selon la première dimension
ASyLe nombre de subdivisions selon la deuxième dimension
ASzLe nombre de subdivisions selon la troisième dimension
Returns
Un booléen indiquant si le volume incident à ADart est un cube dont les arêtes sont maillées

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').

Parameters
ADartUn brin de la carte
ASxLe nombre de subdivisions selon la première dimension
ASyLe nombre de subdivisions selon la deuxième dimension
ASzLe nombre de subdivisions selon la troisième dimension
Returns
Un booléen indiquant si le volume incident à ADart est un cube dont les arêtes sont maillées

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.

Parameters
ADimUne dimension (0, 1, 2 ou 3)
ADartUn brin de la carte
ASxLe nombre de subdivisions selon la première dimension
ASyLe nombre de subdivisions selon la deuxième dimension
ASzLe nombre de subdivisions selon la troisième dimension
Returns
Un booléen indiquant si le volume incident à ADart est un cube maillé en dimension ADim

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.

Parameters
ADartUn brin de la carte
AModelUn brin de la carte
Returns
Un booléen indiquant si le brin ADart est 0-cousu

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.

Parameters
ADartUn brin de la carte
ASxLe nombre de subdivisions
AModelUn brin de la carte
Returns
Un booléen indiquant si ADart est à l'extrémité d'un polyligne constituée de ASx arêtes

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.

Parameters
ADimUne dimension (0 ou 1)
ADartUn brin de la carte
ASxLe nombre de subdivisions
AModelUn brin de la carte
Returns
Un booléen indiquant si la face incidente à ADart est un carré maillé en dimension ADim

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.

Parameters
ADimUne dimension (1 ou 2)
ADart1Un brin de la carte
ADart2Un brin de la carte
ASLe nombre de subdivisions de l'arête
Returns
NULL ou l'extrémité de la polyligne

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).

Parameters
ADartUn brin de la carte
ACheck3SewsUn booléen indiquant s'il faut vérifier l'état des 3-coutures
A3SewedUn booléen indiquant si le carré doit être 3-cousu
Returns
Un booléen indiquant si la face incidente à ADart est un carré

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).

Parameters
ADartUn brin de la carte
ASxLe nombre de subdivisions selon la première dimension
ASyLe nombre de subdivisions selon la deuxième dimension
ACheck3SewsUn booléen indiquant s'il faut vérifier l'état des 3-coutures
A3SewedUn booléen indiquant si la face doit être 3-cousue
Returns
Un booléen indiquant si la face incidente à ADart est un carré maillé 1d

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).

Parameters
ADartUn brin de la carte
ASxLe nombre de subdivisions selon la première dimension
ASyLe nombre de subdivisions selon la deuxième dimension
ACheck3SewsUn booléen indiquant s'il faut vérifier l'état des 3-coutures
A3SewedUn booléen indiquant si les faces du maillage doivent être 3-cousues
Returns
Un booléen indiquant si la face incidente à ADart est un carré maillé 2d

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).

Parameters
ADartUn brin de la carte
ASxLe nombre de subdivisions selon la première dimension
ASyLe nombre de subdivisions selon la deuxième dimension
ACheck3SewsUn booléen indiquant s'il faut vérifier l'état des 3-coutures
A3SewedUn booléen indiquant si les faces du maillage doivent être 3-cousues
Returns
Un booléen indiquant si la face incidente à ADart est un carré maillé 3d

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).

Parameters
ADimUne dimension (0, 1, 2 ou 3)
ADartUn brin de la carte
ASxLe nombre de subdivisions selon la première dimension
ASyLe nombre de subdivisions selon la deuxième dimension
ACheck3SewsUn booléen indiquant s'il faut vérifier l'état des 3-coutures
A3SewedUn booléen indiquant si la face doit être 3-cousue
Returns
Un booléen indiquant si la face incidente à ADart est un carré maillé 2d

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'.

Parameters
ADimUne dimension (0, 1, 2 ou 3)
ADartUn brin de la carte
ASxLe nombre de subdivisions selon la première dimension
ASyLe nombre de subdivisions selon la deuxième dimension
ASzLe nombre de subdivisions selon la troisième dimension
AMarkNumberXUn numéro de marque pour les arêtes de la première dimension
AMarkNumberYUn numéro de marque pour les arêtes de la deuxième dimension
AMarkNumberZUn 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

Parameters
ADimUne dimension (0, 1 ou 2)
ADartUn brin de la carte
ASxLe nombre de subdivisions selon la première dimension
ASyLe nombre de subdivisions selon la deuxième dimension
AMarkNumberXUn numéro de marque pour les arêtes horizontales
AMarkNumberYUn numéro de marque pour les arêtes verticales
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)

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é.

Parameters
ACubeDartUn brin du cube maillé 2d
AMesh3DartUn brin du maillage 3d
ASxLe nombre de subdivisions du maillage 3d selon la première dimension
ASyLe nombre de subdivisions du maillage 3d selon la deuxième dimension
ASzLe nombre de subdivisions du maillage 3d selon la troisième dimension
Returns
'vrai' si la fusion est possible

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é.

Parameters
AEdgeDartUn brin de l'arête à mailler
AMesh1CornersUn 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é.

Parameters
ASquareDartUn brin du carré maillé 1d
AMesh2DartUn brin du maillage 2d
ASxLe nombre de subdivisions du maillage 2d selon la première dimension
ASyLe 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').

Parameters
ASquareDartUn brin du carré maillé 2d
AMesh3DartUn brin du maillage 3d
ASxLe nombre de subdivisions du maillage 2d selon la première dimension
ASyLe nombre de subdivisions du maillage 2d selon la deuxième dimension
ANextSquareL'alpha2 du brin situé dans le coin opposé à ASquareDart sur le carré 2-maillé (paramètre en sortie)
ANextMesh3SideL'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.

void CMeshGeneric::mesh1 ( CDart *  ADart,
int  ASx,
const CTransformationMatrix *  AMeshMatrix = NULL,
bool  AMeshWithMerges = true,
bool  AMeshWithAdjacentSews = true,
bool  AMeshAssociatedCells = false,
int  ADirectInfoAlpha0 = -1,
int  ADirectInfoAssoc = -1 
)
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.

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 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.
AMeshWithAdjacentSewsUn 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.
AMeshAssociatedCellsUn booléen indiquant si les cellules associées sont maillées ou non.
ADirectInfoAlpha0Un indice de champ directInfo
ADirectInfoAssocUn 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.

void CMeshGeneric::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 
)
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'.

Parameters
ADartUn brin du carré à mailler
ASxLe nombre de mailles à créer selon la première dimension
ASyLe nombre de mailles à créer 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 du maillage de la cellule de départ (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 in GMap3d::CMeshVertex.

Definition at line 95 of file mg-mesh.cc.

void CMeshGeneric::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 
)
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'.

Parameters
ADartUn brin du cube à mailler
ASxLe nombre de mailles à créer selon la première dimension
ASyLe nombre de mailles à créer selon la deuxième dimension
ASzLe nombre de mailles à créer 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 du maillage de la cellule de départ (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 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.


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