Formula per CurvaNurbs

eeee Luca sei arrivato tardi, il nostro Fabio nel blog Rhino3d è già una celebrità :wink:

Illuminatemi, che mi sono perso?

Con un po’ più di calma, Latex permettendo, salvo errori o omissioni :sweat_smile:

B(t)=(1-t)^3 P_0+3tP_1(1-t)^2+3t^2P_2(1-t)+P_3t^3

B\prime(t)= -3(1-t)^2P_0+3P_1(1-t)^2-6P_1t(1-t)+6P_2t(1-t)-3P_2t^2+3P_3t^2
B\prime(t)=3(1-t)^2[P_1-P_0]+6t(1-t)[P_2-P_1]+3t^2[P_3-P_2]

B{\prime\prime}(t)=-6(1-t)[P_1-P_0]+6(1-t)[P_2-P_1]-6t[P_2-P_1]+6t[P_3-P_2]
B{\prime\prime}(t)=6(1-t)[P_0-2P_1+P_2]+6t[P_1-2P_2+P_3]

Prendendo quindi i punti P_0(0,0) \space P_1(2,0) \space P_2(2,2) \space P_3((1,3)

x\prime(\frac 1 2)=3(1-\frac 1 2)^2[2-0]+6\frac 1 2(1-\frac 1 2)[2-2]+3\frac{1}{2}^2[1-2]=\frac 3 4
y\prime(\frac 1 2)=3(1-\frac 1 2)^2[0-0]+6\frac 1 2(1-\frac 1 2)[2-0]+3\frac{1}{2}^2[3-2]=\frac {15} 4

x{\prime\prime}(\frac 1 2)=6(1-\frac 1 2)[2-2\times2+2]+6\frac 1 2[0-2\times2+1]=-9
y{\prime\prime}(\frac 1 2)=6(1-\frac 1 2)[0-2\times0+2]+6\frac 1 2[0-2\times2+3]=3

Usando la solita formula k=0,64366 ecc.

1 Mi Piace

Ma figurati. :rofl:
Un conto è chiacchierare tra amici in questo contesto cercando di fornire il proprio supporto.
Per “insegnare” queste cose occorre una grande preparazione , cosa che non ho proprio. :confused:

Ti capisco. Personalmente dovrei riprendere qualche buon libro e studiare queste curve, ma non ho la giusta motivazione per farlo :yawning_face:

immagine

Fabio di la verità, lo hai fatto apposta ahahahah :smile: :smile:

2 Mi Piace

Secondo me c’e’ un altro aspetto che possiamo notare qui … :slight_smile:

La formula che Fabio ha copiato troppo in fretta, per quei valori di CV e parametro da’ i risultati corretti.
Risultato corretto non implica formula corretta. :grinning:

OK, e’ la scoperta dell’acqua calda, ma un piccolo ‘ripasso’ forse non guasta … :wink:

ok Emilio, ma alla fine i punti di questo cerchio osculatore si riescono a trovare?

Ciao Salvio.
Ho provato a mettere insieme una definizione di GH … se la montagna non va da Maometto … :rofl:

Soliti quattro punti.
Sono stati “internalizzati” per comodità ma, ovviamente, ne puoi usare quattro a discrezione.
Nella parte alta, in sostanza, c’è il lavoro che abbiamo fatto: ho inserito direttamente le formule della derivata prima e della derivata seconda.
Per il calcolo della curvatura ho usato la formula di cui abbiamo scritto.
Nella parte centrale ho lasciato generare a GH la curva di Bezier e le due derivate, usando la stessa formula per il calcolo della curvatura.
Nella parte bassa ho lasciato calcolare direttamente a GH la curvatura.
I risultati sono naturalmente uguali.

Salvio curvatura.gh (10,4 KB)

E’ una proprietà debole. :wink:

1 Mi Piace

eeee con la def che hai fatto, se aspettava a me la montagna diventava un lago ahahahah :rofl: :rofl: :joy:

ok grazie Fabio, questa era veramente tosta :+1: partendo da questa def quindi, se qualcosa appreso mi è rimasta, per ottenere i punti in cui la curva cambia direzione come succede con il comando curvatura in Rhino bisogna trovare la lunghezza del raggio e compararla con il centro del cerchio e il Tan della curva?

Questi ?

Io no.

io mi fermo qui ragazzi, penso che c’é talmente di quella roba da stare apposto secoli ahahahah

un grazie a tutti per la partecipazione/condivisione siete grandi :+1:

1 Mi Piace

K(t) = ||C’(t) x C’‘(t)|| / ||C’(t)||^3

Probabilmente dirò una banalità. Per trovare i massimi e i minimi della curvatura
“basta” calcolare dove si azzera la derivata del numeratore senza tenere conto della
radice quadrata.

D = (C1yC2z-C1zC2y)^2 + (C1zC2x-C1xC2z)^2 + (C1xC2y-C1yC2x)^2

la sua derivata è

dD = 2*(C1yC2z-C1zC2y)(C2yC2z+C1yC3z+C2zC2y+C1zC3y)
+ 2
(…)
+ 2*(…)
= 0

dove 1, 2 e 3 indicano il grado di derivazione.

Se la curva bezier C ha grado 3, la funzione dD è una bezier di grado (2+1)+(1+1) = 5
Se la curva bezier C ha grado 5, la funzione dD è una bezier di grado (4+3)+(3+3) = 13

Se la curva bezier C ha grado 11, la funzione dD è una bezier di grado (10+9)+(9+9) = 37

2 Mi Piace

Ciao Sergio

Hmmm … non riesco a seguire il ragionamento …
Io avrei detto il numeratore della derivata … :confused:

Hai ragione Emilio, m’è scappata la frizione … :joy:

1 Mi Piace

Ciao Sergio, mi sembra un’ottima idea.
D’accordo che nel caso di Salvio si semplifica un po’ di roba, ma chi glielo “spiega” a GH?
Io no di sicuro. :rofl:

Emilio, di la verità c’é lai un pochino con Sergio ahahahah :rofl: :rofl: :joy:

Fabio, intendi che come ha formulato Exp Sergio è complicato poi riportarla in Gh?

comunque vedendo questi due esempi di Fabio ed Emilio, che in parte o in tuto sostituiscono
le espressioni sopratutto quelle parti più complicate, diciano che rendono il tutto già più fattibile.

Per me di sicuro. :blush:
Un conto è calcolare un valore e poi inserirlo in una formula.
Un altro è fargli calcolare delle soluzioni.
Non mi pare che GH abbia un risolutore e occorrerà andare di script o usare qualche plugin dedicato … ce ne sono?

1 Mi Piace