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


Graal

Un petit exemple de raccordement de courbes lisses de Bézier...
Le dessin ci-contre représente une pièce de révolution dont l'enveloppe extérieure est construite par trois courbes de Bézier (les vecteurs aux extrémités sont représentés en vert).
L'intérieur a une forme semi-sphérique et le dessous est un disque plat.


Source

// attributs

GLamCircle*     segm0 ;   // dessous
GLamRevolution* segm1 ;   // base du pied
GLamRevolution* segm2 ;   // pied
GLamRevolution* segm3 ;   // bol extérieur
GLamSphere*     segm4 ;   // bol intérieur
GLamRevolution* segm5 ;   // bord supérieur
GLamGroup*      graal ;

// construction

int nbSect = 180 ;
segm0 = new GLamCircle( 30.0 * 2, nbSect ) ;

double pts1[][2] = { {30,0},{12,6},
           {4,0},{16,0}} ;
segm1 = new GLamRevolution(
     (double*)pts1, (double*)(pts1+2), nbSect ) ;

double pts2[][2] = { {12,6},{14,64},
           {-12,0},{-14,-5}} ;
segm2 = new GLamRevolution(
     (double*)pts2, (double*)(pts2+2), nbSect ) ;

double pts3[][2] = { {14,64},{42,104},
           {14,5},{0,-21}} ;
segm3 = new GLamRevolution(
     (double*)pts3, (double*)(pts3+2), nbSect ) ;


segm4 = new GLamSphere( 40.0 * 2, nbSect, -90, 0 ) ;
segm4->changeSide() ;

double pts5[][2] = { {42,0}, {41.5,1}, {40.5,1}, {40,0} } ;
segm5 = new GLamRevolution( (double*)pts5, 4, nbSect ) ;

graal = new GLamGroup ;
int dessous = graal->addObject( segm0 ) ;
graal->addObject( segm1 ) ;
graal->addObject( segm2 ) ;
graal->addObject( segm3 ) ;
int dedans = graal->addObject( segm4 ) ;
int bord = graal->addObject( segm5 ) ;

graal->addObjectRotate(dessous, 180, 0, 0 ) ;
graal->addObjectTranslate(dedans, 0, 0, 104 ) ;
graal->addObjectTranslate(bord, 0, 0, 104 ) ;

float gold[10] = { 0.24725, 0.1995, 0.0745,
           0.75164, 0.60648, 0.22648,
           0.628281, 0.555802, 0.366065,
           51.2 } ;
graal->setMaterial( gold ) ;

// projection sur la scène

glPushMatrix() ;
  glScaled(0.1, 0.1, 0.1 ) ;
  graal->draw() ;
glPopMatrix() ;
graal_def_example.png

graal_example.png

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