Moka kernel
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
gmv-primitive.hh File Reference

Go to the source code of this file.

Functions

CDart * createPolyline (const std::vector< CVertex > &AVector)
 
CDart * createPole (int An, const CVertex &AVertex)
 
CDart * createOpenedPole (int An, const CVertex &AVertex)
 
CDart * createRegularPolygon (int An)
 
void createSphere (int AMeridians, int AParallels, CDart **ASouthPole, CDart **ANorthPole)
 
CDart * createSphere (int AMeridians, int AParallels)
 
void createCylinder (int AMeridians, int AParallels, CDart **ABorder1, CDart **ABorder2, bool AClose1=true, bool AClose2=true)
 
CDart * createCylinder (int AMeridians, int AParallels, bool AClose1=true, bool AClose2=true)
 
void createPyramid (int AMeridians, int AParallels, CDart **ABaseDart, CDart **APoleDart, bool ACloseBase=true)
 
CDart * createPyramid (int AMeridians, int AParallels, bool ACloseBase=true)
 
void createTorus (int AMeridians, int AParallels, TCoordinate ARadiusProportion, CDart **AEquator)
 
CDart * createTorus (int AMeridians, int AParallels, TCoordinate ARadiusProportion)
 
void createSquareIMeshed (int ASx, int ASy, int AMeshDimension, CDart *ASquareCorners[2][2])
 
CDart * createSquareIMeshed (int ASx, int ASy, int AMeshDimension)
 
void createCubeIMeshed (int ASx, int ASy, int ASz, int AMeshDimension, bool ACreatedFaces[3][2], CDart *AFacesCorners[3][2][2][2])
 
void createCubeIMeshed (int ASx, int ASy, int ASz, int AMeshDimension, bool ACreatedFaces[3][2], CDart **ADart1, CDart **ADart2)
 

Function Documentation

void createCubeIMeshed ( int  ASx,
int  ASy,
int  ASz,
int  AMeshDimension,
bool  ACreatedFaces[3][2],
CDart *  AFacesCorners[3][2][2][2] 
)

Appelle la méthode 'CGMapGeneric::createCubeIMeshed' puis plonge le cube créé. Le cube obtenu est centré sur l'origine et son côté vaut 1.

Parameters
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
AMeshDimensionLa dimension du maillage (0, 1 ou 2)
ACreatedFacesUn tableau de dimension 3*2 de booléens
AFacesCornersUn tableau de dimension 3*2*2*2 de pointeurs sur brin
void createCubeIMeshed ( int  ASx,
int  ASy,
int  ASz,
int  AMeshDimension,
bool  ACreatedFaces[3][2],
CDart **  ADart1,
CDart **  ADart2 
)

Cette méthode est fournie dans le but de faciliter l'exploitation du noyau. Elle appelle simplement la méthode 'createCubeIMeshed' ci-dessus et retourne un brin du cube.

ATTENTION: Selon les valeurs de AFace–, l'objet créé peut ne pas être connexe !

Si l'objet créé est connexe, ADart1 est positionné sur un de ses brins et la valeur NULL est affectée à ADart2. Si l'objet créé n'est pas connexe, ADart1 est positionné sur un brin de la première composante et ADart2 sur un brin de la deuxième composante.

Parameters
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
AMeshDimensionLa dimension du maillage (0, 1 ou 2)
ACreatedFacesUn tableau de dimension 3*2 de booléens
ADart1Un brin du cube
ADart2Un brin du cube
void createCylinder ( int  AMeridians,
int  AParallels,
CDart **  ABorder1,
CDart **  ABorder2,
bool  AClose1 = true,
bool  AClose2 = true 
)

Appelle la méthode CGMapGeneric::createTopoCylinder puis plonge le cylindre créé. Le cylindre obtenu est axé sur OX, sa hauteur vaut 1, son rayon 1/2.

La face incidente à ABorder1 est dans le plan Z=-1/2. La face incidente à ABorder2 est dans le plan Z=+1/2.

Les brins AClose1 et AClose2 en sortie sont situés sur le méridien passant par le sommet (+1/2,0,0).

Parameters
AMeridiansLe nombre (non nul) de méridiens du cylindre
AParallelsLe nombre (non nul) de parallèles du cylindre
ABorder1L'adresse d'un pointeur sur brin
ABorder2L'adresse d'un pointeur sur brin
AClose1Un booléen indiquant s'il faut fermer le bord incident à ABorder1
AClose2Un booléen indiquant s'il faut fermer le bord incident à ABorder2
CDart* createCylinder ( int  AMeridians,
int  AParallels,
bool  AClose1 = true,
bool  AClose2 = true 
)

Cette méthode est fournie dans le but de faciliter l'exploitation du noyau. Elle appelle simplement la méthode 'createCylinder' ci-dessus et retourne le brin correspondant à ABorder1.

Parameters
AMeridiansLe nombre (non nul) de méridiens du cylindre
AParallelsLe nombre (non nul) de parallèles du cylindre
AClose1Un booléen indiquant s'il faut fermer le bord incident à ABorder1 (voir méthode 'createCylinder' ci-dessus)
AClose2Un booléen indiquant s'il faut fermer le bord incident à ABorder2 (voir méthode 'createCylinder' ci-dessus)
Returns
Un brin du cylindre
CDart* createOpenedPole ( int  An,
const CVertex AVertex 
)

Appelle la méthode CGMapGeneric::createTopoOpenedPole puis plonge le sommet central du pôle créé avec l'attribut AVertex.

Parameters
AnLe nombre de triangles qui composent le pôle
AVertexLe plongement du sommet central du pôle
Returns
Un brin 2-libre du sommet central du pôle
CDart* createPole ( int  An,
const CVertex AVertex 
)

Appelle la méthode CGMapGeneric::createTopoPole puis plonge le sommet central du pôle créé avec l'attribut AVertex.

Parameters
AnLe nombre de triangles qui composent le pôle
AVertexLe plongement du sommet central du pôle
Returns
Un brin du sommet central du pôle
CDart* createPolyline ( const std::vector< CVertex > &  AVector)

Utilise la méthode createMesh1 avec un CMesh1VectorDiver.

Parameters
AVectorUn vecteur contenant les sommets de la polyline
Returns
Un brin extrémité de la polyline
void createPyramid ( int  AMeridians,
int  AParallels,
CDart **  ABaseDart,
CDart **  APoleDart,
bool  ACloseBase = true 
)

Appelle la méthode CGMapGeneric::createTopoPyramid puis plonge la pyramide créée. La pyramide obtenue est axée sur OZ, sa hauteur vaut 1, le rayon de sa base 1/2.

La base (incidente à ABaseDart) est dans le plan Z=-1/2. La pointe (incidente à APoleDart) est aux coordonnées (0,0,+1/2).

Les brins ABaseDart et APoleDart en sortie sont situés sur le méridien passant par le sommet (+1/4,0,0).

Parameters
AMeridiansLe nombre (non nul) de méridiens de la pyramide
AParallelsLe nombre (non nul) de parallèles de la pyramide
ABaseDartL'adresse d'un pointeur sur brin
APoleDartL'adresse d'un pointeur sur brin
ACloseBaseUn booléen indiquant s'il faut fermer le bord incident à ABaseDart
CDart* createPyramid ( int  AMeridians,
int  AParallels,
bool  ACloseBase = true 
)

Cette méthode est fournie dans le but de faciliter l'exploitation du noyau. Elle appelle simplement la méthode 'createPyramid' ci-dessus et retourne le brin correspondant à ABaseDart.

Parameters
AMeridiansLe nombre (non nul) de méridiens de la pyramide
AParallelsLe nombre (non nul) de parallèles de la pyramide
ACloseBaseUn booléen indiquant s'il faut fermer le bord incident à ABaseDart (voir méthode 'createPyramid' ci-dessus)
Returns
Un brin du cylindre
CDart* createRegularPolygon ( int  An)

Crée un polygone régulier centré sur l'origine et de vecteur normal OZ. Le premier sommet de la face créée est aux coordonnées (1/2,0,0), c'est-à-dire que le polygone est inscrit dans un cercle de diamètre 1.

Le brin b retourné est celui du premier sommet de la face tel que le plongement de alpha0(b) ait une ordonnée positive.

Parameters
AnLe nombre d'arêtes du polygone
Returns
Un brin de la face créée

An>=3

void createSphere ( int  AMeridians,
int  AParallels,
CDart **  ASouthPole,
CDart **  ANorthPole 
)

Appelle la méthode CGMapGeneric::createTopoSphere puis plonge sphère créée. La sphère obtenue est centrée sur l'origine, son diamètre vaut 1.

Le pôle sud est aux coordonnées (0,0,-1/2). Le pôle nord est aux coordonnées (0,0,+1/2).

Les brins ASouthPole et ANorthPole en sortie sont situés sur le méridien passant par le sommet (+1/2,0,0).

Parameters
AMeridiansLe nombre (non nul) de méridiens de la sphère
AParallelsLe nombre (non nul) de parallèles de la sphère
ASouthPoleL'adresse d'un pointeur sur brin
ANorthPoleL'adresse d'un pointeur sur brin
CDart* createSphere ( int  AMeridians,
int  AParallels 
)

Cette méthode est fournie dans le but de faciliter l'exploitation du noyau. Elle appelle simplement la méthode 'createSphere' ci-dessus et retourne le brin correspondant à ASouthPole.

Parameters
AMeridiansLe nombre (non nul) de méridiens de la sphère
AParallelsLe nombre (non nul) de parallèles de la sphère
Returns
Un brin de la sphère
void createSquareIMeshed ( int  ASx,
int  ASy,
int  AMeshDimension,
CDart *  ASquareCorners[2][2] 
)

Appelle la méthode 'CGMapGeneric::createTopoSquareIMeshed' et plonge le carré maillé créé. Le carré est centré sur l'origine et son vecteur normal est OZ. Les coins de la face créée sont aux coordonnées (+-1/2,+-1/2,0).

Parameters
ASxLe nombre de subdivisions selon la première dimension
ASyLe nombre de subdivisions selon la deuxième dimension
AMeshDimensionLa dimension du maillage (0 ou 2)
ASquareCornersUn tableau de dimension 2*2 de pointeurs sur brin
CDart* createSquareIMeshed ( int  ASx,
int  ASy,
int  AMeshDimension 
)

Cette méthode est fournie dans le but de faciliter l'exploitation du noyau. Elle appelle simplement la méthode 'createSquareIMeshed' ci-dessus et retourne le brin correspondant à ASquareCorners[0][0].

Parameters
ASxLe nombre de subdivisions selon la première dimension
ASyLe nombre de subdivisions selon la deuxième dimension
AMeshDimensionLa dimension du maillage (0 ou 2)
void createTorus ( int  AMeridians,
int  AParallels,
TCoordinate  ARadiusProportion,
CDart **  AEquator 
)

Appelle la méthode CGMapGeneric::createTopoTorus puis plonge le tore créé. Le tore obtenu est axé sur OZ, c'est-à-dire que l'axe OZ passe dans le trou du tore sans l'intersecter.

Le brin AEquator en sortie est situé sur le sommet de coordonnées (+1/2,0,0).

On alpha donc les relations suivantes:

k = r/R , r+R = 1/2 , r = k/2/(1+k) , R = 1/2/(1+k)

Parameters
AMeridiansLe nombre (non nul) de méridiens du tore
AParallelsLe nombre (non nul) de parallèles du tore
ARadiusProportionLa valeur r/R (petit rayon sur grand grand rayon)
AEquatorL'adresse d'un pointeur sur brin
CDart* createTorus ( int  AMeridians,
int  AParallels,
TCoordinate  ARadiusProportion 
)

Cette méthode est fournie dans le but de faciliter l'exploitation du noyau. Elle appelle simplement la méthode 'createTorus' ci-dessus et retourne le brin correspondant à AEquator.

Parameters
AMeridiansLe nombre (non nul) de méridiens du tore
AParallelsLe nombre (non nul) de parallèles du tore
ARadiusProportionLa valeur r/R (petit rayon sur grand grand rayon)
Returns
Un brin du tore