Curve di Bézier-approfondimenti1
Nei post precedenti ho presentato formule sui determinanti che permettono di risolvere sistemi di equazioni lineari. Vedremo come questi sistemi permettono di elaborare formule per costruire curve che attraversano diversi nosi, ampliando così le possibilità operative di curve analoghe a quelle di Bézier.
Le Curve di Bézier permettono di definire la forma di una curva intervendendo su un numero limitato di nodi. La più interessante è quella di ordine 3, che permette di variare la curva agendo sui nodi iniziale e finale e sulle relative tangenti, che possono essere allungate o accorciate, influendo sulla forma. Quelle di grado superiore sono difficilmente gestibili,dato che i nodi aggiuntivi non appartengono alla curva.
L’arco di Bézier più interessante e più utile è quello di ordine 3, definito dai punti P1 e P2, che costituiscono gli estremi del segmento, e dai punti V e W che definiscono le tangenti.
La formula relativa è la seguente, ottenuta da un polinomio omogeneo di grado 3 in t e 1-t:
x=(1-t)^3*x1+3*t*(1-t)^2*xv+3*t^2*(1-t)*xw+t^3*x2
y=(1-t)^3*y1+3*t*(1-t)^2*yv+3*t^2*(1-t)*yw+t^3*y2
Il caso 3D, che generalmente è sghembo, si ricava aggiungendo la terza coordinata:
z=(1-t)^3*z1+3*t*(1-t)^2*zv+3*t^2*(1-t)*zw+t^3*z2
Per maggiore comodità, invece di utilizzare le coordinate dei punti finali delle tangenti, conviene utilizzare i valori delle tangenti medesime:
x1=
y1=
z1= !punto iniziale
t1x=
t1y=
t1z= !tangente su P. iniziale
x2=
y2=
z2= !punto finale
t2x=
t2y=
t2z= !tangente su P. finale
x=(1-t)^3*x1+3*t*(1-t)^2*(t1x+x1)+3*t^2*(1-t)*(t2x+x2)+t^3*x2
y=(1-t)^3*y1+3*t*(1-t)^2*(t1y+y1)+3*t^2*(1-t)*(t2y+y2)+t^3*y2
z=(1-t)^3*z1+3*t*(1-t)^2*(t1z+z1)+3*t^2*(1-t)*(t2z+z2)+t^3*z2
Curve di Bézier simmetriche
Le curve di Bézier possono essere rese simmetriche, distribuendo i nodi in successione in modo che siano riflessi da un asse (in 2D) o da un piano di simmetria (in 3D).
I prolungamenti delle tangenti si incontreranno allora sull’ente di simmetria, retta o piano.
La curva di Bézier simmetrica del grado 3 permette di costruire archi.
La curva di Bézier del grado 4, con la poligonale di 5 punti, semplificata rendendola simmetrica, risulta interessante. Infatti può assumere una forma a campana o ad occhiello, ma soprattutto permette di gestire in modo indipendente il suo punto di massimo rispetto l’inclinazione assunta dagli estremi.
La formula generale in 2D della curva di Bézier del grado 4 è:
x=(1-t)^4*x1+4*t*(1-t)^3*x2+6*t^2*(1-t)^2*x3+4*t^3*(1-t)*x4+t^4*x5
y=(1-t)^4*y1+4*t*(1-t)^3*y2+6*t^2*(1-t)^2*y3+4*t^3*(1-t)*y4+t^4*y5
dove t, variando da 0 a 1, descrive la curva.
Ponendo il punto P1 sull’origine si annullano i primi monomi. Inserendo il punto finale P5 sull’asse x se ne annulla l’ordinata, posta poi la lunghezza della corda pari a lb si ricava:
x=4*t*(1-t)^3*x2+6*t^2*(1-t)^2*x3+4*t^3*(1-t)*x4+t^4*lb
y=4*t*(1-t)^3*y2+6*t^2*(1-t)^2*y3+4*t^3*(1-t)*y4
I punti P2 e P4 definiscono le tangenti in P1 e P5: se la curva risulta simmetrica i vettori tangenti avranno la stessa ordinata con ascissa opposta. Il punto interno P3 dovrà poi cadere sull’asse di simmetria.
Se il vettore tangente in P1 ha la forma (tx,ty), la formula diventa:
x=4*t*(1-t)^3*tx+3*t^2*(1-t)^2*lb+4*t^3*(1-t)*(lb-tx)+t^4*lb
y=4*t*(1-t)^3*ty+6*t^2*(1-t)^2*y3+4*t^3*(1-t)*ty
Per analogia nello spazio, con vettore tangente (tx,ty,tz) , basta aggiungere la terza coordinata:
z=4*t*(1-t)^3*tz+6*t^2*(1-t)^2*z3+4*t^3*(1-t)*tz
La versione 2D l’ho applicata per lo schienale di una sedia, mentre per il bracciolo ho utilizzato la curva Bézier del grado 3.