![]() |
GLam Collection version 0.4 - | ACCUEIL - CLASSES - HIERARCHIE - MEMBRES - EXEMPLES |
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() ; | ![]() ![]() |