GLU NURBS - comment définir le poids des points de contrôle?
Question
J'écris une classe NURBS qui utilise l'extension GLU OpenGL pour effectuer le rendu, mais je viens de réaliser que je ne sais pas comment définir les poids des points de contrôle. Ce n'est pas dans le Livre rouge ou la documentation GLU, et le Web ne mentionne pas beaucoup non plus. Est-il possible que la mise en œuvre de NURBS de GLU ne comprend pas tout simplement cette fonctionnalité? Si oui, je suis surpris qu'ils se sont enfuis avec l'appelant NURBS et pas seulement B-splines.
Modifier :. "Modifiés poids de noeud" à "poids de point de contrôle"
La solution
Votre problème énoncé dans la terminologie NURBS est que vous voulez rationnel courbe au lieu d'un non-rationnel .
En regardant le gluNurbsCurve prototype, nous avons:
void gluNurbsCurve(GLUnurbsObj *nobj, // NURBS object
GLint nknots, // number of knots
GLfloat *knot, // knot values
GLint stride, // stride
GLfloat *ctlarray, // control points array
GLint order, // order of data
GLenum type) // data type
L'un des paramètres est *knot
, mais il est pas un tableau de poids. La glu façon gère des poids de nœud est un peu de confusion, vous pouvez lire à ce sujet .
Le paramètre ctlarray et dernier est ceux qui vous intéresse. Le dernier paramètre, le type, est l'un des types d'évaluateur en deux dimensions. Généralement, vous pouvez utiliser GL_MAP2_VERTEX_3 pour nonrational ou GL_MAP2_VERTEX_4 pour les points de contrôle rationnels, respectivement.
Voir la Livre rouge pour plus de détails.