Comments
Description
Transcript
Appunti sulle curve di Bézier
Appunti sulle curve di Bézier Marco Barbato 1 Ottobre 2000 Abstract Vengono delineati in modo elementare gli argomenti matematici alla base delle curve di Bézier e la loro implementazione nei software tool di sviluppo grafico vettoriale. Questi appunti sono stati originariamente scritti per le classi IV dell’ITIS “Carlo Zuccante” di VeneziaMestre come supporto didattico per le lezioni del modulo “Grafica per il web” nell’ambito del corso di Progettista di siti web tenuto nell’omonimo Istituto nel 2000. 1 Il teorema di Weierstrass Le curve di Bézier sono il risultato dell’applicazione di un teorema di Analisi Matematica che va sotto il nome di teorema di approssimazione di Weierstrass: Proposizione 1 (Teorema di Weierstrass, 1885). Data una funzione continua f : [a, b] → R, allora, comunque si prenda un reale > 0, ∃ un polinomio P : [a, b] → R tale che |f (x) − P (x)| < , ∀ > 0, ∀x ∈ [a, b] (1) Ciò che il teorema afferma, in parole povere, è che esiste un polinomio vicino quanto vogliamo alla funzione continua f , in modo tale che i due grafici possano quasi sovrapporsi. La scelta del polinomio P dipende dalla tolleranza . Lo strumento delle curve di Bézier è stato sviluppato nei primi anni 70 in seguito a ricerche nel campo del CAD (Progettazione assistita da calcolatore) come metodo di codifica di curve presenti nelle immagini reali. L’invenzione delle curve di Bézier è quindi un’applicazione del teorema di approssimazione. 1 2 Alcuni fatti fondamentali 2.1 Rappresentazione analitica di curve nel piano Una curva geometrica si può pensare come grafico di una funzione. Fondamentalmente vi sono due modi di rappresentare le curve: • rappresentazione parametrica • rappresentazione cartesiana La prima è più potente della seconda nel senso che descrive i punti di tutta la curva senza dover introdurre ambiguità di segno o funzioni a più valori. Esempio: la circonferenza. Sia R il raggio della circonferenza e per semplicità sia (0,0) il suo centro. Si ha: Equazioni parametriche x(t) = R cos t y(t) = R sin t, t ∈ [0, 2π) Equazione cartesiana • forma implicita: x2 + y 2 = R2 ; √ • forma esplicita: y = ± R2 − x2 . L’ambiguità di segno ci dice che in realtà per descrivere una circonferenza dobbiamo usare due equazioni, e i punti (R, 0) e (−R, 0) hanno rappresentazione doppia (sono descritti sia dall’equazione con il + sia dall’equazione con il −); invece nella rappresentazione parametrica, ciascun punto è rappresentato una sola volta. 2.2 I polinomi di Bernstein Sono polinomi della forma n X n p(t) = ti (1 − t)n−i i i=0 Il coefficiente binomiale n i , n ≥ i ≥ 0 è cosı̀ definito: 2 (2) n i = n!(n − i)! , dove n! = 2 × 3 × . . . × n i! Un metodo veloce per calcolare i coefficienti dello sviluppo binomiale è il cosiddetto triangolo di Tartaglia: 0 i 1 i 2 i 3 i 4 i ... 1 1 1 1 1 1 2 1 3 4 3 6 1 4 1 ... Ogni coefficiente di una riga è desumibile dalla riga sovrastante sommando i due coefficienti alla destra e alla sinistra della posizione in cui si vuole inserire il coefficiente. L’aggettivo binomiale si riferisce al fatto che i coefficienti della tabella 2.2 sono i coefficienti dello sviluppo delle potenze di un binomio: (a + b)0 = 1 (a + b)1 = a + b (a + b)2 = a2 + 2ab + b2 (a + b)3 = a3 + 3a2 b + 3ab2 + b3 ... Proposizione 2 I polinomi di Bernstein nella forma (2) sono identicamente = 1. Dimostrazione: si riconosce nella (2) lo sviluppo della potenza del binomio (a + b)n , dove a = t e b = t − 1, per cui in (2) è scritto lo sviluppo di (1 − t + t)n = 1. 3 Q.E.D. 3 Curve di Bézier La curva di Bézier di ordine n + 1 è la curva parametrica che si ottiene dalla combinazione lineare di n + 1 punti distinti del piano P0 , P1 , . . . , Pn (punti di controllo) secondo i coefficienti dello sviluppo di Bernstein (2): n X n P (t) = Pi ti (1 − t)n−i i (3) i=0 Ci riferiremo spesso in questi appunti ai coefficienti della combinazione lineare con il nome di pesi, in quanto la (3) si può interpretare come una media pesata dei punti P0 , . . . , Pn . E’ importante rilevare alcuni fatti di carattere generale prima di passare agli esempi. Dalla proposizione 2 si ricava che la somma dei pesi della combinazione lineare dei punti di controllo è identicamente uguale a 1; inoltre tutti i pesi della combinazione lineare sono positivi. L’unione di questi due fatti ha un preciso significato geometrico, e cioè: Proposizione 3 L’insieme dei punti di una curva di Bézier è contenuto nell’involucro convesso definito dai punti di controllo. Un altro fatto importante è che: Proposizione 4 I punti di controllo P0 e Pn appartengono alla curva di Bézier P (t), mentre tutti gli altri punti no, per nessun t. Esempio: Curve di Bézier di ordine 1 Dati due punti P1 e P2 nel piano, la curva di Bézier passante per tali punti si ottiene dalla loro combinazione convessa; in forma vettoriale: P (t) = P1 t + P2 (1 − t) (4) t ∈ [0, 1] e in forma scalare (essendo P (t) = [x(t), y(t)]): x(t) = x1 t + x2 (1 − t) (5) y(t) = y1 t + y2 (1 − t) (6) 4 Si riconosce immediatamente che P (t) descrive il segmento P1 P2 . Dunque una curva di Bézier di ordine 1 per i punti P1 e P2 è un segmento del piano: P1 P2 . Esempio: Curve di Bézier di ordine 3 L’equazione parametrica in forma vettoriale : P (t) = P1 t3 + 3P2 t2 (1 − t) + 3P3 t(1 − t)2 + P4 (1 − t)3 (7) Per esercizio si ricavino le equazioni scalari. 3.1 Continuità Si possono descrivere più profili contigui unendo opportunamente due diverse curve di Bézier. Si possono cosı̀ realizzare diversi tipi di profilo: • condizione di continuità C 0 : è sufficiente, per due curve di Bezier (P1 , . . . , P4 ) e (Q1 , . . . , Q4 ) imporre la condizione: P4 = Q1 ; (8) si otterrà, in generale, una curva che può contenere dei punti angolosi. • condizione di continuità C 1 : è necessario assicurare, oltre alla condizione (8), la condizione sulle pendenze delle curve in entrata e in uscita dal punto in comune; l’ulteriore condizione è: P4 − P3 = Q1 − Q2 ; (9) 3.2 Le curve di Bezier nei software grafici vettoriali. Per tracciare segmenti è necessario specificare solo due punti di controllo. Utilizzando un qualsiasi software grafico (ad esempio Adobe Illustrator) con queste operazioni è possibile tracciare le curve di Bezier. Azione: cliccare una sola volta sul primo punto, cliccare una sola volta nel secondo punto. Per tracciare curve si possono usare 1 o due maniglie: una maniglia è un punto di controllo. Azione: cliccare per creare il primo punto P1 , tenere premuto e trascinare per definire la prima maniglia (punto di controllo P2 ). Azione: cliccare in un secondo punto per definire P4 e trascinare il mouse per definire la seconda maniglia (punto di controllo P3 ). Il software calcola le coordinate dei punti e realizza la curva di Bézier controllata da tali punti. 5 4 4.1 Gli uomini che hanno contribuito. Pierre Bézier Pierre Bézier, ingegnere, lavora alla Renault fin dal 1933 e coltiva l’idea della modellazione matematica dei profili delle automobili, idea respinta dai managers Renault, fino a che nel 1972 non riuscı̀ a far prevalere la sua idea con l’avvento dei sistemi CAD. Nel 1986 lavorò alla stesura delle specifiche del linguaggio Adobe PostScript. Muore il 25 settembre 1999, a 89 anni. 4.2 Karl Wilhelm Theodor Weierstrass Karl Wilhelm Theodor Weierstrass, 1815 – 97, matematico tedesco. Dal 1864 fu professore di matematica all’Università di Berlino. Il suo lavoro sulla moderna teoria delle funzioni è descritto nel suo Abhandlungen aus der Funktionenlehre (1886), che fu scritto per larga parte compilando gli appunti delle lezioni dei suoi studenti. Fu uno degli sviluppatori del moderno approccio rigoroso all’Analisi e alla Teoria dei Numeri e molto fece per chiarire i fondamenti di queste materie. Dimostrò (1871) l’esistenza di una funzione continua in un intervallo ma non derivabile in alcun punto. 4.3 Nicolò Fontana, detto Tartaglia Nicolò Fontana, matematico italiano, nacque a Brescia probabilmente nel 1499. Fu chiamato Tartaglia a causa della balbuzie provocata dalle ferite subite durante il sacco di Brescia. Non ancora ventenne egli si trasferı̀ a Verona e vi rimase fino al 1535. Successivamente si trasferı̀ a Venezia dove morı̀ nel 1557. A Nicolò Tartaglia si deve la scoperta della risoluzione delle equazioni cubiche, chiamata anche regola di Cardano, dal nome del matematico che gli sottrasse la soluzione inserendola nella sua opera Ars Magna. 4.4 Sergei Natanovich Bernstein Sergei Natanovich Bernstein, (nato nel 1880 a Odessa, Ucraina e morto nel 1968 a Mosca, URSS). Studiò a Parigi alla Sorbona e alla Scuola Superiore di Elettrotecnica. Introdusse quelli che ora vengono 6 chiamati polinomi di Bernstein per dare una dimostrazione costruttiva del teorema di Weierstrass. Alcuni dei lavori più importanti di Bernstein riguardano la teoria della probabilità. 7 Sommario 1 Il teorema di Weierstrass 1 2 Alcuni fatti fondamentali 2.1 Rappresentazione analitica di curve nel piano . . . . . 2.2 I polinomi di Bernstein . . . . . . . . . . . . . . . . . . 2 2 2 3 Curve di Bézier 3.1 Continuità . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Le curve di Bezier nei software grafici vettoriali. . . . . 4 5 5 4 Gli 4.1 4.2 4.3 4.4 6 6 6 6 6 uomini che hanno contribuito. Pierre Bézier . . . . . . . . . . . . Karl Wilhelm Theodor Weierstrass Nicolò Fontana, detto Tartaglia . . Sergei Natanovich Bernstein . . . . 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . References [1] Figueiredo, Reveills, Hersch, Digitization of Bézier curves and Patches using discrete geometry, in Discrete Geometry for Computer Imaginery, Springer-Verlag, 1999 9