Formula per CurvaNurbs

ok grazie Alex
ma fammi capire una cosa, essendo che questo tipo di def che hai allegato li avevo già visti fare sia in rete che qualche volta anche qui nel forum, ma si tratta della stessa cosa? perché da quello che si vede nell’animazione per le Bezier i punti dove deve passare la curva si collegano a particolari linee, mentre se non erro con la tua def sposti nello spazio i punti determinando una suddetta forma ma senza seguire le regole della Bezier giusto?

ps ma quei pesi sul foglio di carta, sono per i clienti rompiscatole ahahahah :rofl: :rofl:

Emilio giusto per non sbagliare, sarebbe la stessa postata in questo post:

La bezier (grado 3) è ben altra cosa:

x(t) = P0X (1-t)^3+P1X3t(1-t)^2+P2X3t^2*(1-t)+P3Xt^3
y(t) = P0Y (1-t)^3+P1Y3
t*(1-t)^2+P2Y3t^2*(1-t)+P3Y*t^3

e la derivata prima è:

dx/dt = 3*[ (P1X-P0X) (1-t)^2+(P2X - P1X)2t(1-t)+(P3X - P2X)t^2]
dy/dt = 3
[ (P1Y-P0Y) (1-t)^2+(P2Y - P1Y)2t(1-t)+(P3Y - P2Y)*t^2]

Per calcolare la derivata della curva basta calcolare:

dy/dx = (dy(t)/dt) / (dx(t)/dt)

Vediamo la curva di grado 3 indicata. La sua espressione matematica è la seguente:

x(t) = 0 * 1 * (1-t)^3 + 2 * 3 * t * (1-t)^2 + 0 * 3 * t ^2 * (1-t) + 2 * 1 * t^3
y(t) = 0 * 1 * (1-t)^3 + 1 * 3 * t * (1-t)^2 + 1 * 3 * t ^2 * (1-t) + 0 * 1 * t^3

con t {0;1}

La sua derivata è

dx(t) = 3 * [ 1 * (2-0) (1-t)^2 + (0-2) * 2 * t * (1-t) + (2-0) * t^2 ]
dy(t) = 3 * [ 1 * (1-0) (1-t)^2 + (1-1) * 2 * t * (1-t) + (0-1) * t^2 ]

per t= 0.5 risulta

dx(t) = 0
dy(t) = 0

Quindi

dy/dx = 0 / 0 !!!

Ciò vuol dire che si è presenza di un punto angoloso.