Curve e spline di Bézier
Nella prima fase di editing, per delineare il contorno dell'immagine da ritagliare, vengono sfruttate le curve spline di Bézier (B-spline) planari, di grado 3 e con incollamento di classe (equivalente a ). Come sono definite e cosa vuol dire classe di incollamento?
Curve di Bézier in
Una curva di Bézier è un particolare tipo di curva parametrica, cioè una funzione vettoriale continua del tipo: con e polinomi di grado ; essa è determinata da un poligono di controllo, cioè da un insieme ordinato di punti distinti di (chiamati punti di controllo).
In particolare, Bétsie sfrutta le curve cubiche di Bézier (di grado 3, ), definite, quindi, da un poligono di controllo costituito da punti in solitamente indicati con . Le coordinate dei punti di controllo sono sufficienti a determinare l'equazione della curva di Bézier associata tramite l'algoritmo di de Casteljau, da cui si ottiene un'equazione del tipo:
che, introducendo i polinomi di Bernstein di grado in forma generale:
con si può riscrivere come:
.
Quello che si vede disegnato a schermo, qui sotto in rosso, e quando utilizziamo l'applicazione, non è altro che l'immagine (o supporto) della curva così definita.![Costruzione grafica di una curva cubica di Bézier](/betsie/bezier_3.gif)
Spline di Bézier di grado 3 in
Per delimitare una figura arbitrariamente complessa sarebbe necessario introdurre una curva di Bézier di grado molto elevato, che risulterebbe pesante dal punto di vista computazionale e che dipenderebbe strettamente dal suo poligono di controllo senza, quindi, offrire un controllo locale. Per risolvere questi problemi, in computer grafica si utilizzano le spline di Bézier (B-spline), cioè curve date dall'incollamento di più curve di Bézier aventi lo stesso grado: nel nostro caso, essendo tutte le curve da incollare di grado 3, si parlerà di spline cubiche (di grado ).
Formalmente, tutte le curve di Bézier hanno come dominio l'intervallo ma, per poter definire una spline, è necessario che le curve siano definite su intervalli adiacenti: questo viene fatto grazie alla possibilità di riparametrizzare una curva di Bézier definita sull'intervallo con una curva equivalente definita su un intervallo arbitrario (con e ). Se consideriamo e è possibile definire una funzione di transizione (biunivoca, bicontinua e bidifferenziabile):
per due estremi e fissati che riparametrizzi una curva in una equivalente , quindi tale che: .
Per far sì che i supporti di due curve cubiche e definite su due intervalli adiacenti e si incollino modo opportuno, è necessario, inoltre, definire una condizione di incollamento. Nel nostro caso utilizziamo, per dare massima libertà all'utente, la condizione di incollamento più "semplice" (chiamata o in caso la si consideri come condizione di incollamento geometrico) che impone solamente: e, cioè, che l'ultimo punto del poligono di controllo della prima curva coincida con il primo punto del poligono di controllo della seconda curva.
Trasformazioni affini del piano
Passando alla seconda fase di editing, invece, si possono applicare, alla porzione di immagine ritagliata, tre tipi di trasformazioni affini del piano , che, in pratica, sono definite sulla porzione di piano dell'intera pagina web. Teniamo in considerazione, però, che il sistema di riferimento cartesiano della pagina, con origine nell'angolo in alto a sinistra, asse delle ascisse con verso positivo a destra e asse delle ordinate con verso positivo in basso, non coincide con quello dell'immagine in primo piano che ha origine nel centro della stessa, asse positivo verso destra e asse positivo verso l'alto.
Le trasformazioni affini utilizzate in Bétsie, altrimenti dette affinità, sono trasformazioni di uno spazio in se stesso (); queste sono corrispondenze biunivoche che legano punti di coordinate a punti di coordinate tramite una relazione in forma matriciale del tipo:
dove è la matrice di trasformazione invertibile () e è un vettore fissato.
La seguente tabella mostra le caratteristiche delle tre affinità utilizzate in Bétsie:
Affinità | Matrice di trasformazione | Vettore |
---|---|---|
Traslazione | ||
Rotazione di centro | ||
Omotetia di centro |
con vettore di traslazione, angolo di rotazione e fattore di dilatazione/contrazione. Ricordiamo, inoltre, che, nel nostro caso, tutte le trasformazioni hanno l'origine nel centro dell'immagine ritagliata di partenza.