Dominio-Riparametrizzazione

reparam

ho cercato come riparametrizzare una curva con Py in Gh ed ho trovato alcuni esempi
il primo es:#1 l’ho provato funziona e testato

poi per caso spulciando nel menù ho trovato proprio questo metodo/funzione “Reparameterize”
il secondo es:#2 sembra che chieda un valore numerico e se tra le () inserisco lo 0 o 1
output torna solo Vero o Falso ma pare che non serve per riparametrizzare la curva?

ps per visualizzare “Reparameterize” nel menù serve associare una curva al componente Python poi sull’input col tasto Dx menù Type hint selezionare Curve oppure nel codice usare il coercecurve come foto

Ciao

guarda la formula: lambda(t)=c*t/((c-1)*t+1)
se poni c=0 restituisce false perché lambda vale sempre zero per ogni valore di t…
Valori di c minori di 1 restituiscono punti distribuiti verso l’inizio della curva.
Valori di c maggiori di 1 restituiscono punti distribuiti verso la fine della curva.
E se c=1? :upside_down_face:

In sostanza la nuova curva è simile all’originale (non uguale!) ma la distribuzione
dei punti è funzionale al coefficiente c. Se calcoli i punti sulla curva originaria suddividendo
uniformemente il dominio e noti che i punti sono “sbilanciati verso la fine” della curva,
inserendo c<1 la nuova curva restituirà punti (sempre valutati suddividendo uniformemente
il dominio) “meno sbilanciati verso la fine” della curva.

La prima viene chiamata formalmente riparametrizzazione ma di fatto non comporta nulla.

1 Mi Piace

ciao Sergio grazie per la risposta

quindi per l’esempio #1 Dominio, mi confermi che non cambia nulla ma reimposta solo il dominio curva.

per la spiegazione counque non comprendo a cosa serva, essendo che il risultato è un bool True/False
0 sempre falso per il resto qualsiasi numero torna True ma non posso usare il risultato come nuova curva
(alla fine non mi ritrovo con una curva riparametrizzata ma solo con un valore booleana sbaglio?)

Ciao Salvio.

Si’ … :grinning_face_with_smiling_eyes:

Come dice la documentazione che mostri ( vedi anche qui: NurbsCurve.Reparameterize Method (rhino3d.com) ) quel metodo serve a riparametrizzare la curva (come cambia lo ha spiegato Sergio).
Ma il metodo non definisce nuove curve, semplicemente modifica la curva che tu gli passi.
E restituisce un valore booleano per dire se la parametrizzazione e’ andata a buon fine.
Riporto qui cosa dice la documentazione:

Return Value

Type: Boolean
true if successful.

Nel tuo esempio, se il metodo restituisce True, ti riparametrizzata la curva in crvs
Pero’ se tu il risultato lo assegni alla stessa variabile crvs … perdi la curva per strada. :wink: .
Non hai piu’ modo di recuperarla.
Se vuoi utilizzare la curva riparametrizzata non devi sovrascrivere crvs.

a.Reparameterize(0.1)

a.Reverse()

ciao Emilio quindi in pratica è come il Reverse :+1:

1 Mi Piace

ok Sergio, come dicevi cambiando il valore cambia la distribuzione dei punti :+1:

val = 0 Curva non riprarametrizzata
val < 1 Curva riprarametrizzata con punti verso la fine
val > 1 Curva riprarametrizzata con punti verso inizio
val = 1 Curva riprarametrizzata mantenendo gli stessi punti (come col comando in Rhino)

e se il valore è minore di zero <0?