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"

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top