GLam Collection version 0.4 -  ACCUEIL -  CLASSES -  HIERARCHIE -  MEMBRES -  EXEMPLES


Référence de la classe GLamTesselation

Solide construit par facettisation. Plus de détails...

#include <glamtesselation.h>

Graphe d'héritage de GLamTesselation:
GLamPolygon GLamObject

Liste de tous les membres

Fonctions membres publiques

 GLamTesselation ()
 GLamTesselation (double *pts, int numPts, double thickness)
 GLamTesselation (const GLamTesselation &obj)
 GLamTesselation (const GLamPolygon &obj)
 GLamTesselation (const GLamCube &obj)
 GLamTesselation (const GLamCylinder &obj)
 GLamTesselation (const GLamClosedCurve &obj)
 ~GLamTesselation ()
GLamTesselationoperator= (const GLamTesselation &obj)
GLamTesselationoperator= (const GLamPolygon &obj)
GLamTesselationoperator= (const GLamCube &obj)
GLamTesselationoperator= (const GLamCylinder &obj)
GLamTesselationoperator= (const GLamClosedCurve &obj)
void create ()
void update ()
void setColor (float r, float g, float b, bool shiny=false)
void setShiny (bool shiny=true)
void setSimpleColor (bool simpleColor=true)
void setMaterial (float mat[10])
void setThickness (double thickness)
void setSelected (bool selected=true)
void addCircularHole (double xCenter, double yCenter, double radius, int numSectors=20)
void addPolygonalHole (double xOffset, double yOffset, double *pts, int numPts)
void addPolygonalHole (double xOffset, double yOffset, const GLamPolygon &obj)
void addPolygonalHole (double xOffset, double yOffset, double length, double radius, double alpha)
void addCurvedHole (double xOffset, double yOffset, double *pts, int numPtsCtrl, int numSectors)
int numHoles () const

Description détaillée

Solide construit par facettisation.

Cette classe permet de définir un objet par un contour polygonal quelconque (convexe ou concave) et une épaisseur.
L'objet est posé sur le plan 0XY et en élévation sur l'axe Z.
En plus du constructeur de copie, un objet de classe GLamTesselation peut aussi être construit à partir d'un élément de classe GLamPolygon, GLamCube, GLamCylinder ou encore GLamClosedCurve.
Une fois le volume de base créé, la classe permet d'ajouter des ouvertures (trous) au moyen de ses méthodes add...Hole(). Les deux premiers arguments de ces méthodes déterminent la position de l'évidement sur le plan 0XY.
La classe doit son nom à la technique GLU utilisée pour calculer la décomposition en facettes triangulaires des faces trouées de l'objet.


Exemple

// attributs

GLamPolygon*    poly1 ;
GLamTesselation*  tess1 ;
GLamTesselation*  tess2 ;
GLamTesselation*  tess3 ;
GLamTesselation*  tess4 ;

// construction

double pts[][2] = { {0,0}, {2,0}, {2,2}, {1.5,3}, {-0.5,3} } ;
poly1 = new GLamPolygon( (double*)pts, 5, 1.5 ) ;

tess1 = new GLamTesselation( *poly1 ) ;
tess1->addCircularHole( 1, 1, 0.7, 40 ) ;

tess2 = new GLamTesselation( GLamCube(4,4,2) ) ;
tess2->addCircularHole( 1, 0, 0.5, 90 ) ;
tess2->addPolygonalHole( -0.8, 0, 3, 0.4, 60 ) ;
tess2->setColor(0.7, 0.3, 0.2, true ) ;

GLamCylinder cyl(3, 0.8 ) ;
cyl.setNumSectors(180 ) ;

tess3 = new GLamTesselation( cyl ) ;

double hol[][2] = { {1,1.4}, {-1,1.4}, {0,0.2} } ;

GLamObject::rotatePoints((double*)hol, 3, 360 / 10 ) ;
tess3->addCurvedHole(0,0,(double*)hol, 3, 20 ) ;

for (int i = 0 ; i < 4 ; i++ ) {
  GLamObject::rotatePoints((double*)hol, 3, 360 / 5 ) ;
  tess3->addCurvedHole(0,0,(double*)hol, 3, 20 ) ;
}

tess3->setThickness( 1.25 ) ;
tess3->addCircularHole(0, 0, 0.4, 10 ) ;
tess3->setColor(0.565, 0.933, 0.565, true ) ;

double hh = 5 ; double ww = 5 ;
double coeur[][2] = {
  {0,-2*hh/3}, {0,-2*hh/3}, {ww/8,-hh/3}, {ww/2,0},
  {3*ww/8,hh/3}, {ww/10,hh/3}, {0,hh/5}, {0,hh/5},
  {-ww/10,hh/3}, {-3*ww/8,hh/3}, {-ww/2,0}, {-ww/8,-hh/3},
  {0,-2*hh/3}, {0,-2*hh/3} } ;

tess4 = new GLamTesselation(
    GLamClosedCurve( (double*)coeur, 14, 100, 0.5 ) ) ;
tess4->setColor(1.0, 0.753, 0.796, true );

// projection sur la scène

glPushMatrix() ;
  glTranslated( -2, -6, 0 ) ;
  tess1->draw() ;
  glTranslated( 2, 8, 1 ) ;
  tess2->draw() ;
  glTranslated( -5, -7, 0 ) ;
  glRotated(45, 0, 1, 0 ) ;
  tess3->draw() ;
  glTranslated( -1, 7, 0 ) ;
  tess4->draw() ;
glPopMatrix() ;
glamtesselation_example.png



Documentation des constructeurs et destructeur

GLamTesselation::GLamTesselation (  ) 
Constructeur par défaut.

Le constructeur implicite crée un objet en forme de « H » de volume 1.0 x 1.0 x 1.0, apparaissant sous sa forme fil de fer (wireframe). Cet état n'est révocable que par copie d'un autre objet (cf. sélecteur isDefault() de la classe de base).
glamtesselation_default.png
GLamTesselation::GLamTesselation ( double *  pts,
int  numPts,
double  thickness 
)

Contructeur par liste de sommets.
La forme du solide est définie par une liste de points (x,y) et une épaisseur thickness.

GLamTesselation::GLamTesselation ( const GLamTesselation obj  ) 

Constructeur de copie.

GLamTesselation::GLamTesselation ( const GLamPolygon obj  ) 

Constructeur de copie d'un objet de classe GLamPolygon.
La forme du solide est définie par la liste des points (x,y) de l'objet et par son épaisseur thickness. Le contour peut être convexe ou concave.

GLamTesselation::GLamTesselation ( const GLamCube obj  ) 

Constructeur de copie d'un objet de classe GLamCube.
La forme du solide est définie par la largeur, la hauteur et l'épaisseur de l'objet. Le solide est centrée sur le plan XY.

GLamTesselation::GLamTesselation ( const GLamCylinder obj  ) 

Constructeur de copie d'un objet de classe GLamCylinder.
La forme du solide est définie par le diamètre, l'épaisseur et le nombre de facettes (polygone régulier) de l'objet.

GLamTesselation::GLamTesselation ( const GLamClosedCurve obj  ) 

Constructeur de copie d'un objet de classe GLamClosedCurve.
La forme du solide est définie par une courbe de BSpline bornée par la liste des points de contrôle de l'objet. Le contour peut être convexe ou concave.

GLamTesselation::~GLamTesselation (  ) 

Destructeur.


Documentation des fonctions membres

void GLamTesselation::addCircularHole ( double  xCenter,
double  yCenter,
double  radius,
int  numSectors = 20 
)

Méthode d'ajout d'un trou dont la section est un polygone régulier.
Les arguments xCenter et yCenter fixent la position du centre du trou dans le plan XY du solide. Le contour est défini par son rayon et son nombre de facettes (polygone régulier).

void GLamTesselation::addCurvedHole ( double  xOffset,
double  yOffset,
double *  pts,
int  numPtsCtrl,
int  numSectors 
)

Méthode d'ajout d'un trou de section calculée par BSpline.
La forme curviligne convexe ou concave du trou est déterminée par une liste de points de contrôle et un nombre total de facettes, de manière à définir une courbe de BSpline fermée automatiquement. Les arguments xOffset et yOffset permettent d'ajuster la position du trou dans le repère XY du solide.

void GLamTesselation::addPolygonalHole ( double  xOffset,
double  yOffset,
double  length,
double  radius,
double  alpha 
)

Méthode d'ajout d'un trou de section oblongue.
Le trou oblong est défini par une longueur totale length, un rayon radius, et un angle d'inclinaison en degrés alpha. Les arguments xOffset et yOffset permettent d'ajuster la position du trou dans le repère XY du solide.

void GLamTesselation::addPolygonalHole ( double  xOffset,
double  yOffset,
const GLamPolygon obj 
)

Méthode d'ajout d'un trou polygonal quelconque.
Le polygone obj peut être de classe GLamPolygon ou d'une de ses classes filles. Les arguments xOffset et yOffset permettent d'ajuster la position du trou dans le repère XY du solide.

void GLamTesselation::addPolygonalHole ( double  xOffset,
double  yOffset,
double *  pts,
int  numPts 
)

Méthode d'ajout d'un trou de section polygonale quelconque.
Le polygone peut être convexe ou concave, il est défini par une liste de points (x,y). Les arguments xOffset et yOffset permettent d'ajuster la position du trou dans le repère XY du solide.

void GLamTesselation::create (  )  [virtual]

Méthode de dessin utilisée par la classe de base pour générer la display list de l'objet. Les programmes clients ne doivent normalement pas invoquer directement cette méthode, mais préférer la méthode draw() qui exploite la primitive OpenGL glCallList() .

Réimplémentée à partir de GLamPolygon.

int GLamTesselation::numHoles (  )  const [inline]

Retourne le nombre courant d'ouvertures pratiquées dans l'objet.

GLamTesselation & GLamTesselation::operator= ( const GLamClosedCurve obj  ) 

Surcharge de l'opérateur d'affectation.

GLamTesselation & GLamTesselation::operator= ( const GLamCylinder obj  ) 

Surcharge de l'opérateur d'affectation.

GLamTesselation & GLamTesselation::operator= ( const GLamCube obj  ) 

Surcharge de l'opérateur d'affectation.

GLamTesselation & GLamTesselation::operator= ( const GLamPolygon obj  ) 

Surcharge de l'opérateur d'affectation.

Réimplémentée à partir de GLamPolygon.

GLamTesselation & GLamTesselation::operator= ( const GLamTesselation obj  ) 

Surcharge de l'opérateur d'affectation.

void GLamTesselation::setColor ( float  r,
float  g,
float  b,
bool  shiny = false 
) [virtual]

Propriété color.

Réimplémentée à partir de GLamObject.

void GLamTesselation::setMaterial ( float  mat[10]  )  [virtual]

Propriété material.

Réimplémentée à partir de GLamObject.

void GLamTesselation::setSelected ( bool  selected = true  )  [virtual]

Force ou non l'état 'sélectionné' de l'objet. Le cas échéant, celui-ci est alors regénéré avec un aspect cyan semi-transparent.

Réimplémentée à partir de GLamObject.

void GLamTesselation::setShiny ( bool  shiny = true  )  [virtual]

Propriété shiny.

Réimplémentée à partir de GLamObject.

void GLamTesselation::setSimpleColor ( bool  simpleColor = true  )  [virtual]

Propriété simpleColor.

Réimplémentée à partir de GLamObject.

void GLamTesselation::setThickness ( double  thickness  )  [virtual]

Propriété thickness.

Réimplémentée à partir de GLamObject.

void GLamTesselation::update (  )  [virtual]

Fixation du mode de rendu de l'objet et fabrication de la display list. Mise à jour de l'identifiant de l'objet dans la liste des objets.

Voir également:
isUpdate(), updateNeeded()

Réimplémentée à partir de GLamObject.


Doxygen version 1.6.3 - GLam Collection - (c) 2009-2010 Alain Menu