Les B-Splines et Béziers sont des inventions parallèles à peu près la même chose. Où Béziers essaie de partir de l'idée d'ajuster les tangentes. Les B-Splines partent de l'idée des fonctions de base. Les splines NURB (ou la partie rationnelle en fait) ne sont que des généralisations de splines B afin que vous puissiez décrire des sections coniques précises *, car elles présentent un intérêt particulier pour l'ingénierie.
Commençons par une terminologie NURB Spline simple. La logique de ces courbes est un peu différente de celle de Béziers. Il y a d'abord le concept de travée. Une travée serait à peu près équivalente à une spline de Bézier entière, sauf que dans les banlieues, vous pouvez avoir un certain nombre de travées.
Image 1 : Une travée cubique NURBS. C'est un peu atypique dans sa formulation
Chaque travée est formée par le degré de la courbe + 1 points de contrôle **. Chaque courbe peut être constituée d'un nombre quelconque de points. Chaque intervalle consécutif réutilise les points de l'intervalle précédent en supprimant un point et en prenant un point de plus dans la liste. Il est donc aussi facile de créer des courbes plus complexes que d'ajouter simplement plus de points à la courbe.
REMARQUE : Les courbes des images sont un peu paramétrées de façon atypique, ce qui explique mal ce que cela signifie dans la section suivante. Quand je prends le concept de nœuds. C'est juste un moyen plus simple d'expliquer comment les courbes se collent.
Image 2 : 2 travées cubiques l'une après l'autre, chaque travée utilise 4 points. ensemble, ils forment une courbe. Ils partagent la plupart des points entre eux.
À ce jour, nous avons probablement répondu à la question 2 sur l'ajout de complexité. Mais je voudrais ajouter que ce schéma assure une meilleure continuité qu'une courbe de Bézier. De plus, vous pouvez rendre le tableau de points qui forme la coque cyclique. Former une courbe fermée.
Image 3 : Une surface NURBS cubique fermée a autant de travées que de points. Chaque couleur est une portée.
Paramétrisation
Jusqu'à ce point, on pourrait simplement dire que l'enchaînement des travées est un truc tout comme "coudre" les courbes de Bézier. Mais il y a une différence. La courbe est paramétrisée sur toute sa longueur. Les courbes ne sont donc pas séparées, elles n'interpolent pas la forme 0 à 1 sur chaque travée comme le font Béziers. Au lieu de cela, la courbe sous-jacente a une plage de paramètres personnalisables. Le paramètre est stocké dans quelque chose appelé nœud, et chaque nœud peut avoir une valeur croissante arbitraire dans la séquence. Vous pouvez donc paramétrer toute la gamme u des courbes à 0 - 1 ou 0 à 12. La paramétrisation ne doit pas non plus être uniforme.
Cette paramétrisation modifie la forme de la courbe. Pourquoi cela serait-il utile? Eh bien, vous pouvez régler la tension le long de la courbe pour un. Ou vous pouvez encoder la longueur de la courbe dans le paramètre U. Une utilisation particulière est de faire en sorte que la courbe NURBS agisse comme une courbe de Bézier soit entièrement ou juste partiellement (bezier comme aux extrémités mais pas au milieu par exemple).
Image 4 : Mêmes points de séquences de nœuds différentes. La courbe verte NURBS correspond à une courbe de Bézier qui a une plage de paramètres de 0-2 au lieu de 0-1
Ok alors quels sont les nœuds? Ce sont simplement les plages des fonctions de base. Comme la b-spline cubique à 4 points a 4 fonctions d'interpolation, elle a besoin de 8 nœuds. Seules les zones où 3 fonctions se chevauchent et totalisent 1,0 peuvent tracer une ligne.
Image 5 : 2 fonctions de base différentes, une configuration de type Bézier et une segmentation uniforme, réparties sur la plage 0-1.
Et maintenant, nous avons surtout décrit la réponse à la question 1. La plage n'est pas définie, vous pouvez étirer les fonctions de base comme bon vous semble. Enfin, le vecteur de nœud produit simplement les plages de paramètres pour les fonctions de base. Il y a encore une chose qui régit la forme de la courbe et c'est le vecteur de poids. Mais c'est une autre histoire à raconter ailleurs.
* Ce rationnel dans ce cas signifie qu'une courbe NURBS ne doit pas nécessairement être un polynôme, car vous ne pouvez pas décrire un cercle avec des polynômes.
** On peut définir d'autres types de points.