Appunti sulle curve di Bézier

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