Formation OpenGL |
|
Les splines sont la généralisation des courbes de Bézier. Une B-spline est une combinaison linéaire de splines non-négatives à support compact minimal.
Les NURBS (Non-Uniform Rational Basis Splines) correspondent à une généralisation des B-splines car ces fonctions sont définies avec des points en coordonnées homogènes. Le principal intérêt de ces courbes NURBS est qu'elles parviennent même à ajuster des courbes qui ne peuvent pas être représentées par des B-splines. Un exemple fameux est le tracé d'un quart de cercle.
une courbe spline de degré n est une courbe paramétrique
composée de fonctions B-splines de degré n
Où les Pi forment un polygone appelé polygone de contrôle. Le nombre de points composant le polygone est égal à m-n.
Les m-n fonctions B-splines de degré n sont définies par récurrence
Lorsque plusieurs noeuds tj sont confondus on pose
Quand les nœuds sont équidistants, les B-splines sont dites uniformes.
Les NURBS sont utilisées pour représenter mathématiquement des objets géométriques. Elles généralisent la représentation par les B-splines des courbes et des surfaces en ajoutant un dénominateur. Elles sont en fait définies avec des points en coordonnées homogènes. Une B-spline ressemble à une représentation polynomiale par morceaux, alors qu'une NURBS est une représentation par fractions rationnelles par morceaux. Notamment utilisées dans les logiciels d'édition 3D, ces fonctions d'ajustement sont particulièrement utilisées dans le domaine de l'informatique, plus précisément dans la compression d'images et dans le design assisté par ordinateur, afin de générer et représenter des formes douces et ergonomiques. Du fait qu'elle présentent de nombreux avantages, leur utilisation est largement répandue :
Les fonctions NURBS de degré d sont définies par la formule doublement récursive de Cox-De Boor :
où les tj sont des nœuds appartenant au vecteur nodal, et d le degré de la NURBS.
Lorsque plusieurs nœuds tj sont confondus, on pose .
La formule des NURBS possède de grandes correspondances avec celle des B-splines. Elle est simplement généralisée afin d'être appliquée à des coordonnées homogènes :
où les Qi sont les points de contrôle donnés, m le nombre de nœuds, d le degré de la NURBS, les bi,d des coefficients calculés selon l'algorithme de Cox-de Boor, et t le paramètre.
GLU propose des fonctions pour restiture des NURBS.
Etudiez le programme surface.c, qui affiche un patch NURBS défini à l'aide de 16 points de contrôle.