![]() |
GLam Collection version 0.4 - | ACCUEIL - CLASSES - HIERARCHIE - MEMBRES - EXEMPLES |
BSpline par enveloppe polygonale convexe fermée. Plus de détails...
#include <glamclosedcurve.h>
Fonctions membres publiques | |
GLamClosedCurve () | |
GLamClosedCurve (double *pts, int numPtsCtrl, int numSectors, double thickness=0.0) | |
GLamClosedCurve (const GLamClosedCurve &obj) | |
~GLamClosedCurve () | |
GLamClosedCurve & | operator= (const GLamClosedCurve &obj) |
int | numSectors () const |
void | setNumSectors (int numSectors) |
BSpline par enveloppe polygonale convexe fermée.
La classe GLamClosedCurve permet la création de surfaces 2D ou de solides dont le profil est une courbe fermée de BSpline définie par une enveloppe matérialisée par une liste de points de contrôle (x,y).
Note : le principe de calcul des BSplines (de degré 2) laisse la possibilité d'obtenir des sommets non lissés ; il suffit pour cela de doubler le sommet concerné dans la liste.
numSectors
: Nombre de facettes à répartir sur la tranche du solide.
thickness
: Epaisseur de l'objet (dimension Z). Propriété maintenue par la classe de base GLamObject.
// attributs GLamClosedCurve* curv1 ; GLamClosedCurve* curv2 ; GLamClosedCurve* curv3 ; // construction double ptscurv1[][2] = { {4,-2},{3,3},{1,4},{-4,2},{-2,-3} } ; curv1 = new GLamClosedCurve((double*)ptscurv1, 5, 40, 1 ) ; curv1->setColor(255, 236, 139, true ) ; double ptscurv2[][2] = { {2,0},{2,0}, {1.5,2},{-3,3}, {-3,-1},{-3,-1} } ; curv2 = new GLamClosedCurve((double*)ptscurv2, 6, 100 ) ; double ptscurv3[][2] = { {0.3,0},{0.3,0}, {0.6,1},{0.5,2}, {0,3.3},{0,3.3}, {-0.5,2},{-0.6,1}, {-0.3,0},{-0.3,0} } ; GLamObject::scalePoints((double*)ptscurv3, 10, 2, 2 ) ; GLamObject::rotatePoints((double*)ptscurv3, 10, -90 ) ; curv3 = new GLamClosedCurve((double*)ptscurv3, 10, 100 ) ; float mat[10] = { 0.75, 0.25, 0.25, 0.4, 0.4, 0.4, 0.774597, 0.774597, 0.774597, 76.8 } ; curv3->setMaterial( mat ) ; curv3->setNumSectors( 200 ); curv3->setThickness(2.4) ; // projection sur la scène glPushMatrix() ; curv1->draw() ; glTranslated(-6, -5, 2 ) ; curv2->draw() ; glTranslated(2, -1.5, 0 ) ; glRotated(-30, -1, 1, 0 ) ; curv3->draw() ; glPopMatrix() ; | ![]() |
GLamClosedCurve::GLamClosedCurve | ( | ) |
Constructeur par défaut. Le constructeur par défaut crée un élément d'enveloppe triangulaire de volume 1.0 x 1.0 x 1.0. Il apparait sous sa forme fil de fer (wireframe). Cet état est révocable seulement par copie d'un autre objet de même classe (cf. sélecteur isDefault() de la classe de base). | ![]() |
GLamClosedCurve::GLamClosedCurve | ( | double * | pts, | |
int | numPtsCtrl, | |||
int | numSectors, | |||
double | thickness = 0.0 | |||
) |
Constructeur.
L'enveloppe est spécifiée par un tableau pts de numPtsCtrl points de contrôle (x,y).
L'argument numSectors précise le nombre de facettes à répartir sur la tranche dans le cas où l'épaisseur thickness est non nulle.
GLamClosedCurve::GLamClosedCurve | ( | const GLamClosedCurve & | obj | ) |
Constructeur de copie.
GLamClosedCurve::~GLamClosedCurve | ( | ) |
Destructeur.
int GLamClosedCurve::numSectors | ( | ) | const [inline] |
Propriété numSectors
GLamClosedCurve & GLamClosedCurve::operator= | ( | const GLamClosedCurve & | obj | ) |
Surcharge de l'opérateur d'affectation.
void GLamClosedCurve::setNumSectors | ( | int | numSectors | ) |
Propriété numSectors