Delucidazione parametri su dominio curva

Buonasera, dopo tempo, ho riaperto gh e sto rispolverando vecchi esercizi per rinfrescarmi la memoria, in uno di questi mi è sorta una domanda a cui non riesco a dare risposta. Data una qualsiasi curva usando un semplice comando ‘“divide curve” come output quest’ ultimo restituisce P (coordinate punti), T (vettori tangenti) e t (valori parametri), questi ultimi li ho poi usati come input sul comando curvatura ma la domanda è un’altra. I valori dei parametri t sono riferiti al dominio delle curva (solitamente 0→1) e dovrebbero essere multipli. Ora perché questi valori, aldilà del dominio, non mi risultano essere multipli? Ho fatto delle prove, se uso come curva una polilinea, un segmento o anche un arco di cerchio i parametri sono esatti ma con una curva, ad esempio un’ interpolata ma anche un ellisse (dove ci sono curvature diverse) i risultati dei parametri non sono multipli. Non riesco quindi a capire il perché di questi risultati, in parole povere vorrei capire come il comando elabora universalmente i parametri dell’ output “t”. Scusate la lungaggine, sapreste schiarirmi le idee?

Buonasera,

lo Help del componente (immagine da Rhino 6) dice che i punti dividono logicamente la curva in parti di uguale lunghezza.

Credo che solo in casi particolari questa operazione generi valori del parametro spaziati uniformemente.

Le uniche forme geometriche che garantiscono la proporzionalità sono i segmenti e i cerchi perché hanno curvatura costante (o nulla). Ogni altra geometria non può rispettare quanto richiedi. Devi pensare ad un veicolo che procede a velocità costante.

2 Mi Piace

Ciao.
Penso che la relazione tra parametro e lunghezza d’arco non sia lineare, in generale.
Quindi, dove la curvatura è bassa, piccole variazioni del parametro producono grandi variazioni in lunghezza;
Al contrario, dove la curvatura è alta, serve una variazione maggiore del parametro per percorrere la stessa lunghezza.

1 Mi Piace

Ciao Fabio,

hmmm … non riesco a capire da cosa derivi questa relazione tra curvatura e ‘velocita’'. :thinking:
Intendo come regola generale.

Forse non ho capito cosa intendi … :confused:

Ok, sicuramente il valore parametro è proporzionato alla curvatura, la domanda è: tramite quale operazione matematica?

Ciao Emy, sicuramente non mi sono spiegato io, provo a fare meglio.
Poi magari è una idea balzana. :thinking:

La “velocità” di una curva la possiamo vedere come quanto rapidamente viene percorsa al variare del parametro e dipende dal modulo della derivata prima, ovviamente rispetto al parametro.

v(t) = \left|\frac{d\mathbf{C}(t)}{dt}\right|

Questo valore rappresenta quanto spazio percorri lungo la curva per una piccola variazione del parametro t.

Quindi direi che:

  • se v(t)) è grande, per un piccolo incremento di parametro, fai un tratto lungo di curva.
  • se v(t)) è piccolo, per lo stesso incremento di parametro, percorri poca lunghezza.

Detto questo, credo che la curvatura entri in gioco indirettamente:

  • Dove la curva cambia direzione bruscamente, spesso i vettori di controllo sono disposti in modo che la curva “giri” stretta. Quindi, localmente la derivata cambia direzione rapidamente e la velocità tende a ridursi.
  • Dove la curva è quasi rettilinea, il vettore tangente resta quasi costante, Quindi la velocità tende ad essere maggiore.

Non è quindi la curvatura in sé a “modificare” la velocità, ma il modo in cui la curva è parametrizzata (cioè come i punti di controllo e i pesi influenzano la derivata prima).
Nelle curve NURBS, la parametrizzazione non è uniforme rispetto alla lunghezza, quindi il legame tra curvatura e velocità non è diretto ma tendenziale:

  • zone molto curve implicano un parametro “più denso”, serve meno variazione di t per avanzare
  • zone poco curve parametro “più rado”, serve più variazione di t per avanzare

Spero di essere stato più chiaro e, soprattutto, di non avere detto scemenze. :grimacing:

2 Mi Piace

Direi che non esiste un legame diretto tra la curvatura e parametro.
Proviamo a ragionare su come la curvatura possa influenzare la variazione del parametro.

Per una curva parametrica \mathbf{C}(t) = (x(t), y(t), z(t)) la velocità e la curvatura sono date da:

v(t) =\left|\mathbf{C}'(t)\right| = \sqrt{\left(\frac{dx}{dt}\right)^2 + \left(\frac{dy}{dt}\right)^2 + \left(\frac{dz}{dt}\right)^2}

\kappa(t) = \frac{|\mathbf{C}'(t) \times \mathbf{C}''(t)|}{|\mathbf{C}'(t)|^3}

Della curvatura abbiamo parlato parecchio qui, se hai piacere potresti cercare i post precedenti.
Di solito, anche per semplificare il concetto, mi trovo molto meglio nel caso “2D”:

\kappa(t) = \frac{x'(t)y''(t) - y'(t)x''(t)}{(x'(t)^2 + y'(t)^2)^{3/2}}

Come entra in gioco quindi la curvatura?
Il parametro “t” non ha un significato geometrico fisso, è solo una variabile che “fa scorrere” la curva.
La lunghezza d’arco “s” invece è geometrica, e si ottiene integrando la velocità:

s(t) = \int_{t_0}^{t} |\mathbf{C}'(u)| , du

Questa funzione s(t) lega il parametro t alla lunghezza geometrica percorsa sulla curva.
Se inverti questa relazione ottieni t(s), cioè quale parametro corrisponde a una certa lunghezza percorsa.
Ma quindi che legame (indiretto) c’è tra la curvatura e la variazione del parametro?
Ora, la curvatura non entra direttamente in s(t), ma influisce su |\mathbf{C}'(t)|
Questo perché le derivate prime e seconde (che definiscono la curvatura) sono legate alla forma locale della curva.

In zone di alta curvatura:

  • la direzione di \mathbf{C}'(t) cambia molto rapidamente;
  • la sua norma |\mathbf{C}'(t)| tende a essere più piccola (cioè “si muove più lentamente” lungo la curva per unità di parametro).

In termini “matematici” potremmo dire che:

\text{Curvatura alta} \Rightarrow |\mathbf{C}'(t)| \text{ piccolo} \Rightarrow ds/dt \text{ piccolo} \Rightarrow dt/ds \text{ grande}

Quindi,per percorrere una stessa lunghezza d’arco (ds), serve una variazione di parametro (dt) maggiore (il parametro possiamo dire che “si addensi").
In conclusione la relazione non è del tipo t = f(\kappa), ma passa per la velocità:

Non esiste pertanto una formula diretta t = f(\kappa).
Quindi tramite la velocità v(t) = |\mathbf{C}'(t)|, la curvatura influenza come il parametro corrisponde alla lunghezza reale.

O almeno così mi sembra, al solito spero di non avere scritto scemate. :blush:

3 Mi Piace

Grazie molte, Fabio !
Provo a studiarmi la tua spiegazione …
:confused::blush::grinning_face_with_smiling_eyes:

1 Mi Piace

Spiegazione a modo mio:

Il Dominio è la serie di valori parametrici utilizzati per definire la curva.

Rhino usa di base e arbitrariamente, la lunghezza della poligon cage per trovare il valore finale del dominio. Quello iniziale è sempre 0. Editando la curva l’intervallo non cambia. Altrimenti sarebbe come nel giorno del giudizio universale che ognuno si sceglie un corpo che gli piace al posto del suo… casino…

Dal momento che un dominio può essere “riproporzionato” ad un diverso intervallo, importante che sia mantenuta la proporzionalità interna, con il comando Reparameterize in Rhino o con la equivalente opzione di componente in GH si può impostare il dominio al convenzionale intervallo 0<=t<=1.

Come già saggiamente suggerito dal buon Alessio, il parametro di una curva andrebbe visto come la velocità con cui la si percorre.

Al Tempo t0 sono all’inizio e al tempo t1 sono alla fine.

  • 1 abbiamo una curva Deg3 con 4Cv spaziati uniformemente di 10 unità
  • 2 curva Deg3 4 Cv ma con spaziatura più “densa all’inizio”
  • 3 curva Deg3 4 Cv con addensamento Cv verso la fine

Con GH vediamo cosa succede se cerchiamo t0.5

Nel primo caso t0.5 corrisponde alla metà metrica della curva, Secondo caso l’addensamento dei Cv produce un “rallentamento” della velocità t. Il caso tre è opposto di 2. ma in ogni caso e per evidenti ragioni t0 è uguale per tutte e tre. Lo stesso vale in t1.

Come la posizione dei Cv influenzi la parametrizzazione lo vediamo dalla Evaluation Rule.

1 Mi Piace

Buonasera, scusate se non ho risposto in maniera celere ma gli impegni lavorativi mi hanno tenuto occupato. Sicuramente il comando “parametrize” aiuta. Quindi sostanzialmente il calcolo della posizione geometrica dei punti equidistanti passa per la velocità con la quale si passa da un punto all’ altro e di conseguenza è spiegata la non multiplicita’ dei valori “t”. Quindi data una curva con n archi geometricamente di lunghezza uguale, se ho un arco con più punti di controllo rispetto a quelli presenti negli altri, la curvatura è maggiore, la velocità di percorrenza si abbassa ed il parametro “t” aumenta.

In sintesi è sostanzialmente corretto.
Ma, forse, merita una precisazione “fine”, perché tocchiamo tre concetti distinti - curvatura, velocità, e parametrizzazione - che si influenzano ma NON in modo strettamente proporzionale.
Proviamo a vedere passo passo.

Punti di controllo.
Quando aumentiamo il numero di punti di controllo (a parità di lunghezza geometrica complessiva), in generale introduciamo più variazioni locali di direzione, quindi la curvatura media tende ad aumentare, o comunque diventa più variabile.
Quindi sì, in media più punti = più flessibilità = più la curva “curva” :slight_smile:

Velocità parametrica.
Come detto, la velocità dipende da quanto cambia la curva per piccole variazioni di parametro.
Se la curva è molto ondulata o spezzata da più punti di controllo, \mathbf|{C}'(t)| varia di più e in certi tratti si riduce cioè la curva si muove più lentamente rispetto al parametro.
Quindi dove la curvatura è alta, \mathbf|{C}'(t)| tende a essere più bassa.

Che effetti abbiamo sul parametro t?
Poiché la lunghezza reale è data da s(t) = \int_{t_0}^{t} |\mathbf{C}'(u)|du, se |\mathbf{C}'(t)| ) è più piccolo, serve una variazione di parametro più grande per coprire la stessa lunghezza reale.
Quindi curva più “ricca di dettagli” → velocità più bassa → il parametro si “addensa”.

Quindi direi di sì, a parità di lunghezza geometrica, un arco con più punti di controllo tende ad avere curvatura più alta, velocità parametrica più bassa e un parametro “t” che cresce più rapidamente.

Chiaro che il discorso ha senso solo quando i punti di controllo sono effettivamente necessari per definire la forma.
Non ci sono quindi CV “ridondanti” (cioè che non alterano la geometria ma solo la parametrizzazione).
In questo caso i CV descrivono la complessità geometrica reale, quindi il loro numero e la loro distribuzione riflettono l’andamento di curvatura e la variazione di velocità.
Se invece aggiungessimo punti di controllo che non modificano la geometria allora il numero di CV non ha più un legame diretto con la curvatura.
In quel caso la curvatura resta identica ma il parametro t e la velocità ∣C′(t∣ possono cambiare arbitrariamente perché la parametrizzazione è una scelta numerica e non geometrica.

1 Mi Piace