Nurbs curve

Annotazione 2020-07-19 023147

quando nelle curve nurbs i punti hanno lo stesso valore su due coordinate come i 3 centrali
il grafico di curvatura non dovrebbe essere regolare senza cuspidi?

ps succede quando il grado è di valore 3
modificandolo a 5 ovviamente va bene
ma in questo caso la curva cambia.

allego file nel caso servisse:
19.gh (2,3 KB)

Ciao Salvio, una curva di grado n è differenziabile fino a (n -1).
La tua curva di grado tre è quindi derivabile fino alla derivata seconda. Le due derivate, prima e seconda, sono continue.
Se la derivata prima è continua la curva non ha vertici interni.
Se la derivata seconda è continua la curvatura cambia con continuità.
E questo ci dice il grafico di curvatura, è continuo, non fa salti in corrispondenza dei nodi.
Il fatto che ci troviamo “una cuspide” non indica che la curvatura non sia continua, lo sarebbe se la curva esterna del grafico si interrompesse.
In quel punto c’è “solo” una variazione brusca della curvatura.

Ciao Salvio

… cercando di visualizzare quanto detto da Fabio …

La curva ha 4 span e come sappiamo la continuita’ delle curve di terzo grado tra span diversi e’ G2.
Quindi la curvatura e’ continua, ma il grafico di curvatura puo’ fare dei ‘pieghi’.
Come vedi il ‘piego’ c’e’ tra ogni coppia di span successivi.
Convertendo in Bezier vediamo anche che i due span centrali hanno 3 CV allineati.
Credo sia per quello che la curvatura va a 0 nel punto medio, ma questa e’ una considerazione indipendente.
La continuita’ resta G2 anche in quel punto.
Come hai detto giustamente, se aumentiamo il grado della curva la continuita’ cambia, per cui con grado 5 avremo continuita’ G4.
Se vuoi avere continuita’ … infinita, serve uno span solo.
Con 10 CV puoi fare una Bezier unica di grado 9. :slight_smile:

… Se non ho detto cavolate … :confused:

EDIT

Ho confuso il numero dei CV … dovevo dire:
Bezier di grado 6 con 7 CV

1 Mi Piace

ciao Fabio, Emilio

grazie per le spiegazioni e gli esempi,
non conoscevo questa situazione, usavo il metodo dei due punti di controllo finali allineati in modo da essere sicuro che la curva fosse tangente e anche quando andavo a “specchiare” non avevo problemi con avvallamenti o cuspidi ecc in pratica quello che poi fa il comando “simmetria”
però ero convinto che il grafico di curva fosse regolare come nei due esempi laterali della foto

Annotazione 2020-07-19 181349

quindi non mi aspettavo questo risultato, che compare anche nella curva centrale in basso
dove il grafico collassa al centro, anche se così facendo posso ottenere una curva tramite i punti di controllo che però tocchi e rimane nel punto cliccato e differenza degli altri due che inece sono distanti.

dopo quanto scritto da Emilio, ho fatto poi una prova anche convertendo la curva centrale in beziers
e Fabio anche se come dici è solo una variazione brusca, ma come si vede la curva si divide in due
anche se resta inalterato il grafico di curvatura, quindi forse non va ad indicare un’interruzione
ma sicuramente indica una differenza, essendo che le altre due curve laterali non si dividono.

wauu alla fine un punto in più, può cambiare totalmente il risultato di una curva,
e chissà poi quanti altri particolari possono cambiare i lavori che iniziano da esse.

Se ricavi le curve Bezier dalla curva nella tua definizione ottieni 4 curve, anche le parti destra e sinistra della curva originale si dividono in 2.

Se fai (numero-di-CV meno grado) vedi subito quanti span ha la curva.

Indica che sono span diversi.
Ogni curva che non sia una Bezier e’ composta da piu’ span, e al confine tra uno span e quello successivo la continuita’ e’ quella (G2 per le cubiche). Salvo casi particolari.

Tra i designer c’e’ chi, almeno per certi tipi di oggetti, preferisce usare solo curve/superfici di Bezier.

Ciao Emilio, potresti portare un esempio di un caso particolare?

mi accodo a Fabio per un esempio di Bezier

Ciao Salvio, come ha già spiegato Emilio, ogni curva che abbia un numero di punti di controllo pari al proprio grado +1 è una curva di Bezier.
Usa _Curve, imposta grado tre, e traccia quattro CV: hai disegnato una curva di Bezier.
Rhino non fa distinzioni, indica tutto come Nurbs anche quando si tratta di curve di Bezier o Basis Spline.
Non che sia una errore, le Bezier sono casi particolari delle Basis Spline che, a loro volta, sono casi particolari delle Nurbs.
Il “vantaggio” delle curve di Bezier è che sono a singolo span, in sostanza sono descritte da una sola equazione polinomiale.
Non avendo span hanno grafici di curvatura molto puliti, per questo Emilio scrive che alcuni designer preferiscono questo tipo di curve.
Hanno anche il loro “difetti”.
Il primo è che il grado aumenta via via che si inseriscono punti di controllo, e gradi elevati non sono certo un pregio.
Inoltre non hanno controllo locale … essendo a singolo span, ogni spostamento di un qualsiasi punto di controllo comporta la modifica di tutta la curva.
Infine non possono rappresentare esattamente le curve coniche, quelle ottenute dall’intersezione di un piano con due coni allineati su proprio asse e in contatto con il vertice (cerchi, ellissi, parabole ecc.).

Ciao Fabio

Pensavo semplicemente a una Bezier ‘divisa’ in piu’ span inserendo uno o piu’ nodi. ( InsertKnot )

Se non erro, quello dipende dai pesi, non dagli span.
Ad esempio Rhino disegna il cerchio Nurbs come 4 Bezier razionali ‘appiccicate’ insieme, separate dai famosi kink.

ma quanti tipi di curve esistono :man_facepalming:

quindi uno span indica una specie di segmento di curva avente un cv in più del grado stesso
quindi se creo una curva con 4 cv avendo il grado 3 ho creato una bezier giusto?

ma come già detto, in una curva di grado 3 che sia intera o divisa in vari span il grafico di curvatura è sempre identico quindi anche se lo span è un tratto breve delle curva intera, se nella totalità è fatta male anche divisa in span rimane sempre orrenda ovviamente.

Penso che Emilio si riferisca al caso in presenza di knot con molteplicità 2.

Ciao Sergio !

Pensavo a inserire dei knot in una Bezier, quindi ‘maggiore’ continuita’.
Ma il caso di ‘minore’ continuita’ e’ un altro esempio.

Salvio, Fabio confronta curve composte da un singolo span (Bezier) con curve composte da piu’ span (chiamiamole Nurbs).
Non parla di scomporre una Nurbs con ConvertToBeziers.
Parla del fatto che una Bezier, come abbiamo visto, nel caso generale ha un maggior grado di continuita’, come hai mostrato tu nell’immagine che hai postato.

… non è così Emilio. Inserendo dei knot in una bezier ottieni proprio una spline.

1 Mi Piace

… che conserva la forma della Bezier e quindi il grado di continuita’ originale.

Yes Emilio! :+1:

Vero, ma io la vedo come una Nurbs. :smiley:
Certo se converti in Bezier ti ritrovi i quattro archi.

Certo, e’ una Nurbs multispan che rappresenta una conica …

EDIT
Forse ho capito cosa intendevi : per un cerchio o una ellisse completa con una sola curva ci vuole la Nurbs multispan. :slight_smile:

1 Mi Piace

Tu mi capisci, Emilio! :smiley: