Nozioni di base B-spline razionali non uniformi (NURBS)


9

Sto cercando di capire le curve NURBS (le superfici più avanti!) Ma ho qualche problema a capire le basi dei suoi meccanismi interni. Qualcuno potrebbe spiegarmi alcune cose? Dato che provengo dalle curve di Bezier, un confronto tra questi due sarebbe particolarmente utile.

  1. La "funzione di base razionale" assomiglia un po 'al polinomio di Bernstein della curva (razionale) di Bezier. Il parametro uva anche da 0 a 1?

  2. Come "aggiungere dettagli" a una curva? Voglio dire, con Beziers se avessi bisogno di descrivere una forma più complicata avrei semplicemente "ricucito" diversi Bezier insieme. O meno spesso, aumenta il grado. Capisco di poter aumentare anche il grado di NURBS e di affiancare diverse curve NURBS, ma è così che dovrebbe essere fatto?

  3. L'articolo di Wikipedia, almeno per me, non sembra molto chiaro su questo "vettore nodo". Che cos'è comunque?


Questo è un po 'troppo per una domanda. Posso sostanzialmente ridurre la mia lezione introduttiva sull'argomento in poche ore. Un po 'di dettagli sull'uso di De casteljanu e dell'algoritmo de boor mi richiederebbe troppo tempo.
joojaa,

1
Quindi vorrei vedere le domande 3, 5 e possibilmente 6 divise come domande separate per rispondere e comprendere le dimensioni dei pasti.
joojaa,

@joojaa Certo, posso dividere la domanda, solo un secondo ...
Ecir Hana,

1
Quindi le domande 3 , 5 e 6 sono state divise in domande separate.
Ecir Hana,

Risposte:


7

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.

inserisci qui la descrizione dell'immagine

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.

inserisci qui la descrizione dell'immagine

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.

inserisci qui la descrizione dell'immagine

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).

inserisci qui la descrizione dell'immagine

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.

inserisci qui la descrizione dell'immagine

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.


per quanto riguarda (*), le curve di Bezier hanno lo stesso problema. Il problema è che le curve (in entrambi i casi) sono definite come x = f (t), y = f (t). Tuttavia, puoi anche definire una curva dimensionale univariata / esplicita / 1 (di nuovo, in entrambi i casi) come y = f (x), usando x al posto di t. Nel caso di curve razionali, invece di rappresentare sezioni coniche, è possibile rappresentare seno e coseno (e più ovviamente). NURBS / b-splines non sono speciali al riguardo.
Alan Wolfe,

Penso che la tua affermazione sulla lunghezza sia sbagliata (funziona solo con funzioni lineari?), E non sono sicuro di come i calcoli della lunghezza dovrebbero adattarsi alla tua spiegazione (buone informazioni che hai dato, solo dicendo!)
Alan Wolfe,

@AlanWolfe eliminato comunque
joojaa il

Molto fantastico! Grazie mille, ottima spiegazione!
Ecir Hana,

Errore di battitura forse? "Invece la superficie sottostante ha un intervallo di parametri personalizzabile. Il parametro è memorizzato in qualcosa chiamato nodo, e ogni nodo può avere un valore arbitrario che è maggiore del successivo." -> "Invece la curva sottostante ha un intervallo di parametri personalizzabile. Il parametro è memorizzato in qualcosa chiamato nodo, e ogni nodo può avere un valore arbitrario che è maggiore del precedente ." A proposito, potresti chiarire cosa intendi per "raggio UV"? "UV" implica 2D ..?
Ecir Hana,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.