B-Splines e Beziers sono invenzioni parallele più o meno della stessa cosa. Dove Beziers tenta di partire dall'idea di adattarsi alle tangenti. Le B-Splines iniziano con l'idea delle funzioni di base. Le spline NURB (o la parte razionale in effetti) sono solo generalizzazioni delle spline B in modo da poter descrivere sezioni coniche accurate *, poiché sono di particolare interesse per l'ingegneria.
Innanzitutto, cominciamo con una semplice terminologia NURB Spline. La logica di queste curve è leggermente diversa rispetto a quella di Beziers. Innanzitutto c'è il concetto di intervallo. Una span equivarrebbe all'incirca a una spline di Bezier intera, tranne che nei nurbs puoi avere un numero qualsiasi di span.
Immagine 1 : una campata cubica NURBS. Questo è un po 'atipico nella formulazione
Ogni intervallo è formato dal grado della curva + 1 punti di controllo **. Ogni curva può essere composta da un numero qualsiasi di punti. Ogni intervallo consecutivo riutilizza i punti dell'intervallo precedente rilasciando un punto e prendendo un punto in più nell'elenco. Quindi creare curve più complesse è facile come aggiungere più punti alla curva.
NOTA : le curve delle immagini sono un po 'atipicamente parametrizzate, spiegherò cosa significa nella prossima sezione. Quando prendo il concetto di nodi. Questo è solo un modo più semplice per spiegare come le curve si incollano insieme.
Immagine 2 : 2 campate cubiche una dopo l'altra, ogni campata utilizza 4 punti. insieme formano una curva. Condividono la maggior parte dei punti tra loro.
Ormai abbiamo probabilmente risposto alle 2 domande sull'aggiunta di complessità. Ma vorrei aggiungere che questo schema garantisce una migliore continuità rispetto a una curva più bezier. Inoltre, è possibile rendere ciclica la matrice di punti che forma lo scafo. Formare una curva chiusa.
Immagine 3 : Una superficie NURBS cubica chiusa ha tante campate quanti punti. Ogni colore è di una campata.
parametrizzazione
Fino a questo punto si potrebbe semplicemente dire che mettere insieme le campate è un trucco proprio come "cucire" le curve di Bezier. Ma c'è una differenza. La curva è parametrizzata lungo la sua lunghezza. Quindi le curve non sono separate, non interpolano la forma da 0 a 1 su ogni intervallo come fanno Beziers. Invece la curva sottostante ha un intervallo di parametri personalizzabile. Il parametro è memorizzato in qualcosa chiamato nodo, e ogni nodo può avere un valore crescente arbitrario nella sequenza. In questo modo è possibile parametrizzare l'intera curva u nell'intervallo da 0 a 1 o da 0 a 12. Anche la parametrizzazione non deve essere uniforme.
Questa parametrizzazione modifica la forma della curva. Perché sarebbe utile? Bene, puoi regolare la tensione lungo la curva per uno. Oppure potresti codificare la lunghezza della curva nel parametro U. Un uso peculiare è far sì che la curva NURBS si comporti come una curva di Bezier in tutto o in parte (più bezier come nelle estremità ma non nel mezzo, ad esempio).
Immagine 4 : punti uguali con diverse sequenze di nodi. La curva NURBS verde corrisponde a una curva di Bezier che ha un intervallo di parametri di 0-2 anziché 0-1
Ok allora quali sono i nodi? Sono semplicemente gli intervalli delle funzioni di base. Poiché la b-spline cubica con 4 punti ha 4 funzioni di interpolazione, ha bisogno di 8 nodi. Solo le aree in cui 3 funzioni si sovrappongono e si sommano fino a 1,0 può essere tracciata una linea.
Immagine 5 : 2 diverse funzioni di base, una più gradevole e una parametrizzazione uniforme del segmento, distribuite nell'intervallo 0-1.
E ora abbiamo principalmente descritto la risposta alla domanda 1. L'intervallo non è definito, puoi estendere le funzioni di base come ritieni opportuno. E infine il vettore nodo produce semplicemente gli intervalli di parametri per le funzioni di base. C'è ancora un'altra cosa che governa la forma della curva e che è il vettore del peso. Ma un'altra storia da raccontare altrove.
* Questo razionale in questo caso significa che una curva NURBS non deve essere un polinomio, poiché non puoi descrivere un cerchio con polinomi.
** Si possono definire altri tipi di punti.