Sei sulla pagina 1di 124

POLITECNICO DI MILANO

Facolt di Ingegneria Industriale


Corso di Laurea in Ingegneria Aerospaziale
Relazione del corso
di
Aerodinamica ipersonica
Mirco Valentini 707943
Relazione del corso
di
Aerodinamica ipersonica
Mirco Valentini
iii
Einstein: Sai henry un tempo studiavo matematica ma lho lasciata
per la sica.
Poincar: Oh! davvero Albert ma perch?
Einstein: Perch pur potendo distinguere le asserzioni vere da quelle
false non potevo stabilire quali fossero i fatti importanti.
Poincar: Ci molto interessante Albert perch in origine io studiavo
sica ma lho lasciata per la matematica.
Einstein: Davvero! perch?
Poincar: Perch non ero in grado di dire quali dei fatti importanti
fossero veri.
INDICE
1 Cenni Storici 1
1.1 Rappresentazione di una curva . . . . . . . . . . . . . . . . . . 4
2 I polinomi di Bernstein 9
2.1 Sergei Natanovic Bernstein . . . . . . . . . . . . . . . . . . . . 10
2.2 Coeceinte binomiale . . . . . . . . . . . . . . . . . . . . . . 13
2.3 Binomio di Newton e triangolo di Tartaglia . . . . . . . . . . . 17
2.4 Denizione dei polinomi di Bernstein . . . . . . . . . . . . . . 22
2.5 Propriet dei polinomi di Bernstein . . . . . . . . . . . . . . . 23
2.5.1 Denizione Ricorsiva . . . . . . . . . . . . . . . . . . . 23
2.5.2 Derivata in funzione dei polinomi di grado inferiore . . 25
2.5.3 Punto di massimo . . . . . . . . . . . . . . . . . . . . . 28
2.5.4 Non negativit . . . . . . . . . . . . . . . . . . . . . . 29
2.5.5 Partizione dellunit . . . . . . . . . . . . . . . . . . . 30
2.5.6 Simmetria . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.6 Cambiamento di base della base di Bernstein . . . . . . . . . . 31
2.7 Algoritmi per il calcolo dei Polinomi . . . . . . . . . . . . . . 36
2.8 Esempi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
v
vi INDICE
3 La curve di Bzier 45
3.1 Le curve di Bzier . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.2 Propriet delle curve di Bzier . . . . . . . . . . . . . . . . . . 46
3.2.1 Derivata . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.2.2 Interpolazione dei punti estremi . . . . . . . . . . . . . 50
3.2.3 Tangenza nei punti estremi . . . . . . . . . . . . . . . . 52
3.2.4 Inviluppo convesso . . . . . . . . . . . . . . . . . . . . 52
3.2.5 Invarianza per trasformazioni ani . . . . . . . . . . . 53
3.2.6 Suddivisione . . . . . . . . . . . . . . . . . . . . . . . . 54
3.3 Paul De Casteljau . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.4 Algoritmo di DeCasteljau . . . . . . . . . . . . . . . . . . . . 60
3.5 Curve di Bzier razionali . . . . . . . . . . . . . . . . . . . . . 61
3.5.1 Le basi di Bernstein razionali . . . . . . . . . . . . . . 68
3.5.2 Algoritmo di DeCasteljau per curve Razionali . . . . . 69
3.6 Interpolazione e approssimazione . . . . . . . . . . . . . . . . 73
3.6.1 Interpolazione . . . . . . . . . . . . . . . . . . . . . . . 76
3.6.2 Approssimazione . . . . . . . . . . . . . . . . . . . . . 76
3.7 Esempi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.7.1 Calcolo dei poligoni di controllo . . . . . . . . . . . . . 79
4 Superci di Bzier 91
4.1 Denizione di Tensor Product Bzier Surface . . . . . . . . . . 92
4.2 Propriet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
4.2.1 Non negativit . . . . . . . . . . . . . . . . . . . . . . 94
4.2.2 Partizione dellunit . . . . . . . . . . . . . . . . . . . 94
4.2.3 Inviluppo convesso . . . . . . . . . . . . . . . . . . . . 94
4.2.4 Invarianza per trasformazioni ani . . . . . . . . . . . 94
4.2.5 Curve isoparametriche di Bzier . . . . . . . . . . . . . 95
4.2.6 Bordo composto di curve di Bzier . . . . . . . . . . . 96
4.2.7 Interpolazione dei punti di controllo estremi . . . . . . 97
4.2.8 Tangenza nei punti di controllo estremi . . . . . . . . . 97
4.2.9 Derivazione . . . . . . . . . . . . . . . . . . . . . . . . 97
INDICE vii
4.2.10 Suddivisione . . . . . . . . . . . . . . . . . . . . . . . . 98
4.3 Algoritmo di DeCasteljau per superci . . . . . . . . . . . . . 98
4.3.1 Direzione di partenza dellalgoritmo . . . . . . . . . . . 100
4.4 Rational Tensor Product Surfaces . . . . . . . . . . . . . . . . 101
4.4.1 Algoritmo di DeCasteljau per superci Razionali . . . . 102
4.5 Intersezione di superci . . . . . . . . . . . . . . . . . . . . . . 103
4.6 Esempi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
5 Conclusioni 111
ELENCO DELLE FIGURE
2.1 Calcolo del fattoriale . . . . . . . . . . . . . . . . . . . . . . . 16
2.2 Calcolo del coecente binomiale . . . . . . . . . . . . . . . . . 17
2.3 Schema di calcolo di un polinomio di Bernstein . . . . . . . . 37
2.4 Schema di calcolo dei polinomi di Bernstein di grado n . . . . 38
2.5 Script FORTRAN che calcola B
i, n
( u) . . . . . . . . . . . . . 39
2.6 Script FORTRAN che calcola B
i, n
( u) . . . . . . . . . . . . . . 40
2.7 Polinomi di Bernstein di secondo grado e derivate prime . . . 42
2.8 Polinomi di Bernstein di terzo grado e derivate prime . . . . . 42
2.9 Polinomi di Bernstein di quarto grado e derivate prime . . . . 43
2.10 Polinomi di Bernstein di sesto grado e derivate prime . . . . . 43
2.11 Polinomi di Bernstein di quindicesimo grado . . . . . . . . . . 44
3.1 Scritpt FORTRAN per il calcolo delle derivate . . . . . . . . . 51
3.2 Descrizione dellalgoritmo di DeCasteljau . . . . . . . . . . . . 62
3.3 Descrizione dellalgoritmo di DeCasteljau . . . . . . . . . . . . 62
3.4 Script FORTRAN che implementa DeCasteljau . . . . . . . . 63
3.5 Poligono di controllo . . . . . . . . . . . . . . . . . . . . . . . 71
3.6 Poligono di controllo proiettato . . . . . . . . . . . . . . . . . 72
3.7 Cuva di Bzier classica calcolata nello spazio proiettivo . . . . 73
3.8 Curva di Bzier razionale riproiettata nello spazio originario . 74
ix
x ELENCO DELLE FIGURE
3.9 Prolo a18 senza vincoli . . . . . . . . . . . . . . . . . . . . . 78
3.10 Particolare a18 senza vincoli . . . . . . . . . . . . . . . . . . . 79
3.11 Prolo 0015 senza vincoli . . . . . . . . . . . . . . . . . . . . . 80
3.12 Particolare 0015 senza vincoli . . . . . . . . . . . . . . . . . . 81
3.13 Prolo a18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.14 Vincolo su prolo a18 . . . . . . . . . . . . . . . . . . . . . . . 83
3.15 Prolo 0015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.16 Vincolo su prolo 0015 . . . . . . . . . . . . . . . . . . . . . . 85
3.17 Ellisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.18 Iperbole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.19 Curva razionale generica . . . . . . . . . . . . . . . . . . . . . 87
3.20 Poligono autointersecante . . . . . . . . . . . . . . . . . . . . 87
3.21 Poligono autointersecante . . . . . . . . . . . . . . . . . . . . 88
3.22 Poligono autointersecante . . . . . . . . . . . . . . . . . . . . 88
3.23 Figura Chiusa . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.24 Figura chiusa . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
4.1 Script FORTRAN per il calcolo delle derivate di una supercie 99
4.2 Esempio di raccordo eettuato con un ottavo di sfera . . . . . 106
4.3 Esempio di raccordo cilindrico . . . . . . . . . . . . . . . . . . 107
4.4 Esempio di una sezione di ala . . . . . . . . . . . . . . . . . . 107
4.5 Ala composta di pi settori . . . . . . . . . . . . . . . . . . . 108
4.6 Ala con poliedro di controllo . . . . . . . . . . . . . . . . . . . 108
4.7 Tronco di fusoliera . . . . . . . . . . . . . . . . . . . . . . . . 109
4.8 Tronco di fusoliera con poliedro di controllo . . . . . . . . . . 109
CAPITOLO 1
Cenni Storici
Sebbene le sue origini si possano far risalire a molto tempo prima, la geo-
metria computazionale assunse per la prima volta importanza durante la
Seconda Guerra Mondiale, quando la pressione produttiva, soprattutto nel-
lindustria aeronautica, stimol lo sviluppo di nuovi metodi di design.
Fino ad allora il processo di design era stato principalmente di tipo graco,
e completamente adato alle abilit manuali di progettisti e disegnatori.
I nuovi metodi sviluppati in quegli anni si basavano principalmente sul
disegno di curve analitiche, in particolare coniche, ed introdussero un consi-
derevole elemento di computazione nella progettazione industriale. Questo
condusse alluso sempre pi diuso di calcolatori meccanici ed elettromecca-
nici.
Con lavvento dei calcolatori elettronici nella met degli anni 50, ci fu la
possibilit e lesigenza di sviluppare teorie matematiche (essendo la matema-
tica lunico linguaggio capito dai computer) che potessero essere facilmente
utilizzate nei sistemi computerizzati.
Nei primi anni 60 Ferguson, dellamericana BOEING, svilupp un soft-
ware per il design, in cui, per la prima volta, venivano utilizzate per la
denizione di curve e superci le equazioni parametriche al posto di quelle
cartesiane. Da allora questo modo di procedere divent di uso comune per
1
2 CAPITOLO 1. CENNI STORICI
molte ragioni:
Per il disegno delle curve pi conveniente la rappresentazione para-
metrica piuttosto che quella implicita
Luso di equazioni parametriche evita certi problemi che possono sor-
gere nel rappresentare sistemi con tangenti verticali in un sistema di
coordinate sso
Le trasformazioni di coordinate come traslazioni e rotazioni, possono
essere ottenute in un modo pi immediato
La rappresentazione parametrica di curve e superci si rivela partico-
larmente adatta ad essere utilizzata dalle nuove tecnologie
Originariamente le curve venivano rappresentate costruendo un insieme
di curve longitudinali per formare un insieme di sezioni precedentemente de-
nite, un processo conosciuto con il nome di LOFTING. In quegli anni furono
per introdotte nuove tecniche che, fondamentalmente, consideravano sulla
supercie due famiglie di curve; in tal modo la supercie viene suddivisa
in tanti quadrilateri curvilinei detti PATCH (fazzoletti), ognuno dei quali
denito analiticamente, in modo che linsieme delle PATCHES, opportu-
namente raccordate riformi con buona approssimazione lintera supercie in
una forma trattabile.
Nel 1967 S. A. Coons, formul una nuova tecnica per la denizione delle
superci sculturate che successivamente stata studiata e generalizzata da
Gordon e Forrest. Tale tecnica ben si presta in tutte le applicazioni in cui la
supercie da costruire sia individuata a priori da una serie di punti e vettori
tangenti, rilevabili direttamente da un disegno meccanico o da un modello
preesistente.
Per contro questo procedimento richiede un grande dispendio di calcolo
ed inoltre non permette la modica delle superci generate mediante lin-
troduzione di punti supplementari. Questo lavoro unic molto di ci che
3
era stato fatto prima, ma la sua grande teoricit lo avrebbe reso dicile da
capire per un non matematico.
Da questo momento i metodi di descrizione di superci si allontanarono
dalle loro origini geometriche e di disegno manuale. Questo pose il problema
di come rendere disponibile la grande libert dei nuovi metodi di denizio-
ne di patch alloperatore in modo che li potesse facilmente utilizzare. Una
risposta a tale problema fu quella di costruire sistemi completamente automa-
tizzati, che richiedevano alloperatore di inserire alloperatore solo le posizioni
dei punti attraverso i quali doveva passare la supercie, non lasciando altre
libert. (SURFACE FITTING)
Contro questo trend di totale automazione and Pierre Bzier, ingegnere
della francese Renault R dal 1933, che, con la pubblicazione nel 1971 del -
Example of an existing System in the motor industry: the UNISURF system,
formul il primo sistema pratico per il design e la modellazione di superci.
Il sistema UNISURF fondato su ingegnosa riformulazione delle teorie
matematiche delloriginale sistema di Ferguson, e si basa sui risultati ottenuti
pochi anni prima dal francese Paul De Casteljau, ingegnere della Citroen R .
De Casteljau infatti gi nel 1957, formul quello che oggi conosciuto con
il nome di algoritmo di De Casteljau, ma i suoi risultati rimasero allinterno
della compagnia automobilistica di cui faceva parte.
Il sistema UNISURF permette a curve e a superci di essere liberamente
disegnate da un operatore che non ha bisogno di un training matematico
avanzato, lavorando interamente in termini di concetti geometrici elementari.
Fondamentalmente in UNISURF, il disegnatore denisce un poligono
aperto, fatto di linee rette che sono visualizzate su uno schermo graco.
il sistema risponde con una curva liscia che approssima il poligono; agendo
su tale poligono il disegnatore pu modicare la forma della curva no ad
ottenere quanto desiderato. Le superci vengono denite in modo analogo
in termini di poliedro aperto.
Fin dagli anni 60 quasi ogni compagnia si avvaleva dei propri ingegneri
per lo sviluppo di software di design, che quindi risultavano diversi tra loro.
4 CAPITOLO 1. CENNI STORICI
Questa variet di metodi condusse a problemi di comunicazione: la denizio-
ne di un prodotto in un modo non risultava trasferibile su di un altro sistema.
Da qui nacque lesigenza di una geometria standard, e fu trovata nel sistema
delle NURBS (Non Uniform Rational B-Spline), la cui prima apparizione fu
nella tesi di dottorato di K. Vesprille Computer Aided Design applications
of the rational B-spline approximation form del 1975.
Nella presente relazione lo scopo principale della trattazione delle curve
parametriche non quello di dare un vantaggio ad un ipotetico disegnato-
re interattivo, ma quello di poter gestire curve anche molto complicate in
maniera semplice, anche nellottica di realizzare procedure di ottimizzazione
numerica della forma.
Infatti anche in questi casi si presenta la necessit di avere delle curve che
possano essere modicate in maniera intuitiva modicando pochi parametri.
1.1 Rappresentazione di una curva
Una curva viene spesso denita come luogo delle famiglie di punti ad un
parametro. A parte la denizione, quello che interessa veramente per la mo-
dellazione geometrica come queste denizioni possono essere rappresentate
in maniera analitica.
Infatti ci sono pi metodi per rappresentare in forma matematica delle
curve fra i quali:
equazione intrinseca
equazione implicita
equazione esplicita
equazione parametrica
Ognuno di questi modi di rappresentare delle geometrie presenta vantaggi
e svantaggi sia analitici che computazionali, quindi quando si sceglie una
1.1. RAPPRESENTAZIONE DI UNA CURVA 5
particolare forma bisogna tenere conto dei pro e dei contro che questa pu
avere nel contesto che ci interessa.
Rappresentazione intrinseca Una propriet si dice intrinseca quando
non dipende da sistemi di riferimento o altro di esterno, dipende semplice-
mente dalla curva in questione. La notazione intrinseca quindi una notazio-
ne locale, in particolare le equazioni intrinseche di una curva possono essere
rappresentate nel seguente modo:
_

_
1

= f (s)
= g (s)
come si pu vedere, le variabili in gioco sono la torsione , lascissa cur-
vilinea s, e la curvatura
1
/

, che sono tutte variabili locali. In aggiunta


non bisogna confondere questa notazione (esplicita) con lequazione naturale
di una curva (implicita), la quale lega sempre torsione ascissa curvilinea e
curvatura, ma nel seguente modo:
_

f
_
1

, , s
_
= 0
g
_
1

, , s
_
= 0
Equazione implicita ed esplicita di una curva Entrambe le formula-
zioni sono troppo semplici per essere adatte alla rappresentazione di curve
complesse, infatti sono entrambe dipendenti da sistema di riferimento. Inol-
tre in particolare per la denizione esplicita, alcune propriet come ad esem-
pio le tangenti non sono matematicamente ben denite, (esistono casi in cui
sono innite).
Per quanto riguarda la modellazione geometrica, la forma esplicita pu
rappresentare solamente funzioni ad un solo valore, invece la forma implicita
assume una grande importanza per il fatto che, stato dimostrato che ogni
6 CAPITOLO 1. CENNI STORICI
curva parametrica ha una sua rappresentazione implicita, mentre non vero
il contrario.
_

_
y = f (x) esplicita
f (x, y) = 0 implicita
Rappresentazione parametrica Nella formulazione parametrica ogni coor-
dinata di un punto sulla curva, rappresentata separatamente come una
rappresentazione esplicita di un parametro indipendente. In questo modo si
ottengono delle funzioni vettoriali di un unico parametro indipendente.
Inoltre si pu aggiungere che la rappresentazione parametrica di una curva
non unica.
Unaltra caratteristica della rappresentazione parametrica, che si presta
a rappresentare funzioni limitate, infatti i valori che assume dipendono dai
valori del parametro, e di solito vengono normalizzati fra 0 ed 1.
Forma implicita vs. forma parametrica Come gi detto ogni tipo di
parametrizzazione adottata per un data curva presenta vantaggi e svantaggi.
La formulazione parametrica facilmente estendibile al 3D
La formulazione parametrica intrinsecamente adatta a rappresentare
curve limitate, patches o segmenti;
La formulazione parametrica permette facilmente di rappresentare se-
quenze ordinate di punti su di una curva o una supercie
La formulazione parametrica si presta maggiormente ad essere rappre-
sentata su di un pc
La formulazione parametrica a volte porta ad avere delle anomalie che
sono totalmente scorrelate dalla geometria vera (ad esempio i poli della
1.1. RAPPRESENTAZIONE DI UNA CURVA 7
sfera sono dei punti critici per la rappresentazione parametrica, ma
geometricamente i poli non sono dierenti dagli altri punti sulla sfera)
La complessit di molti algoritmi dipende dal tipo di rappresentazione
che si scelta, ad esempio il calcolo di un punto su di una curva/super-
cie dicoltoso nella rappresentazione implicita, mentre il determinare
se un punto sia o meno su di una curva/supercie dicile dal punto
di vista parametrico.
Nel seguito di questa relazione si tratter solo la formulazione parame-
trica, in particolare le curve/superci di Bzier, che sono la base matema-
tica per le NURBS, le quali a loro volta sono lo standard attuale per la
rappresentazione di curve in informatica.
CAPITOLO 2
I polinomi di Bernstein
Ma cos poi che ci d la
sensazione di eleganza in una
soluzione, in una dimostrazione?
larmonia delle diverse parti,
la loro simmetria, il loro felice
equilibrio: in una parola, tutto
quello che introduce un ordine,
quello che d unit, che ci
permette di vedere chiaramente
e comprendere in un sol colpo
linsieme e i dettagli
Jules Henri Poincar
I polinomi sono strumenti matematici incredibilmente utili tanto quanto
semplici. La principale ragione dellimportanza delle funzioni polinomiali nel
calcolo numerico deriva dalle loro buone propriet, in particolare:
sono facilmente memorizzabili, e valutabili numericamente con un cal-
colatore
sono funzioni regolari
9
10 CAPITOLO 2. I POLINOMI DI BERNSTEIN
la derivata e lintegrale di un polinomio sono ancora polinomi i cui coef-
cienti sono determinati algoritmicamente (e quindi con un calcolatore)
il numero di zeri di un polinomio di grado n non pu essere superiore
ad n
data una qualunque funzione continua su un intervallo [a, b], esiste un
polinomio p(x) che la approssima uniformemente qualunque sia l
pressato |f (x) p (x) | <, x [a, b]
I polinomi di Bernstein sono stati introdotti dallo stesso matematico rus-
so S. Bernstein che gli diede il nome, per dimostrare, oltre al teorema di
Weiestrass, anche per dimostrare il seguente teorema di valenza pi generale:
Teorema Sia f : [0, 1] R una funzione continua, allora esiste una suc-
cessione {S
n
}
nN
di combinazioni lineari di polinomi di Bernstein che tende
ad f uniformemente.
Il teorema si esprime in maniera pi compatta dicendo che linsieme dei
polinomi denso nellinsieme delle funzioni continue, e mostra che ogni fun-
zione continua pu essere approssimata da un polinomio, anche se si prova
che tale approssimazione poco eciente dal punto di vista numerico.
2.1 Sergei Natanovic Bernstein
Sergei Natanovic Bernstein, nato a Odessa il 5 marzo 1880 e morto a Mo-
sca il 26 ottobre 1968. F un grande statistico, contribu notevolmente allo
sviluppo della teoria delle equazioni dierenziali nonch alla teoria della pro-
babilit. Con i suoi scritti inuenz lo sviluppo della ricerca nel campo della
probabilit nellUnione Sovietica. Il Padre Spirituale di Bernstein fu Hil-
bert. Lui valorizz la nuova teoria di Cantor verso la quale indirizz alcuni
dei suoi allievi, oltre a Bernstein anche Zermelo. Cantor fu il primo mate-
matico che, tentando di procedere a una fondazione pi accurata di tutta la
2.1. SERGEI NATANOVIC BERNSTEIN 11
matematica, fece della teoria degli insiemi uno studio sistematico apportando
originali contributi. Gli studi sulla teoria delle funzioni e sulle serie trigono-
metriche lo spinsero ad occuparsi degli insiemi inniti di punti. Lo studio
dellinnito e della teoria degli insiemi sono gli obbiettivi anche di Bernstein,
che studi tutta la sua vita per raggiungerli.
Studio e Lavoro Bernstein prese il diploma di scuola media superiore nel
1898, di seguito and a Parigi dove studi alla Sorbona e alla scuola supe-
riore di Elettrotecnica. Durante il suo lavoro a Parigi Bernstein trascorse la
sessione dellanno 1902 1903 a Gottingen. Come dottorato alla Sorbonne,
Bernstein present un lavoro per la soluzione del diciannovesimo problema
di Hilbert. Questo problema posto al Congresso del 1900 fu una soluzione
12 CAPITOLO 2. I POLINOMI DI BERNSTEIN
analitica di equazioni dierenziali ellittiche. Ricevette il dottorato nel 1904
presso la Sorbenne. Malgrado il suo lavoro eccellente nella sua tesi di dotto-
rato, quando Bernstein ritorn in Russia nel 1905, dovette iniziare di nuovo
il suo programma di dottorato perch in Russia non erano ancora state rico-
nosciute le qualicazioni poste per luniversit. Studi per il grado di Master
a Kharkov, continuando la sua strada attraverso i problemi di Hilbert, e ri-
solse il ventesimo problema attraverso la soluzione analitica del problema di
Dirichlet per una ampia classe di equazioni ellittiche non lineari. Nel 1908
gli fu assegnato il suo grado di Master e nel 1913 ricevette il suo secondo
dottorato questa volta a Kharkov. Dal 1907 inizi a insegnare alluniversit
di Kharkov e vi rimase per 25 anni. Dal 1933 fece conferenze alluniversit
di Leningrado e anche allistituto politecnico. Durante questo tempo lavor
allistituto di matematica allaccademia russa di scienze. Nel 1943 Bernstein
si spost alluniversit di Mosca e i successivi 7 anni lavor per la completa
edizione del lavoro di Chebyshev. Stese un grande lavoro per quanto riguarda
la teoria di approssimazione di funzioni, lavoro cominciato proprio da Che-
byshev nel 1854. Nel 1911 introdusse i cosiddetti polinomi di Bernstein, che
servivano per dare una costruttiva dimostrazione al teorema di weiestrass del
1885. In un congresso internazionale a Cambridge nel 1912, Bernstein par-
l riguardo questo lavoro. Poi continu a sviluppare queste idee risolvendo
problemi della teoria di interpolazione, metodi di integrazione meccanica e
nel 1914 introdusse una nuova classe di funzioni quasi analitiche. Alcuni dei
pi importanti lavori di Bernstein furono nella teoria della probabilit, a cui
prov un assioma nel 1917. Inoltre generalizz la condizioni di Lyapunov
attraverso teoremi di limiti centrali, studiando generalizzazioni della legge
dei grandi numeri, lavor nel processo di Markov e nel processo stocastico.
Bernstein inne studi applicazioni di probabilit, in particolare di genetica.
2.2. COEFFICEINTE BINOMIALE 13
2.2 Coeceinte binomiale
Cenni di calcolo combinatorio Il calcolo combinatorio il termine che
denota tradizionalmente la branca della matematica che studia i modi per
raggruppare e/o ordinare secondo date regole gli elementi di un insieme nito
di oggetti. Il calcolo combinatorio si interessa soprattutto di contare tali
modi, ovvero le congurazioni e solitamente risponde a domande quali Quanti
sono..., In quanti modi..., Quante possibili combinazioni... eccetera.
Pi formalmente, dato un insieme S di n oggetti si vuole contare le
congurazioni che possono assumere k oggetti tratti da questo insieme.
Permutazione Una permutazione un modo di ordinare in successione n
oggetti distinti, come nellanagrammare una parola. In termini matematici
una permutazione di un insieme X si denisce come una funzione biiettiva
p : X X.
Il numero delle permutazioni di n oggetti pari al fattoriale di n:
n! = n (n 1) (n 2) 1
infatti ci sono n modi di scegliere loggetto che occupa la prima posizione,
per ciascuno di essi ci sono n 1 modi di scegliere loggetto che occupa
la seconda posizione, poi per ogni coppia di oggetti ssati nelle prime due
posizioni ci sono n2 modi di scegliere loggetto nella terza posizione, e cos
via, no ad occupare tutte le posizioni.
Disposizione Nel calcolo combinatorio, se n e k sono due interi positivi, si
denisce disposizione di n elementi k a k (oppure di n elementi di classe k)
ogni sottoinsieme ordinato di k oggetti estratti da un insieme di n oggetti,
in cui i sottoinsiemi dieriscono se presentano qualche elemento diverso o
se presentano gli stessi elementi ma in ordine diverso. Talvolta, k viene
chiamato numero di posti e la disposizione di n oggetti in k posti viene
chiamata k-disposizione. Se si impone la condizione che in ogni sottoinsieme
14 CAPITOLO 2. I POLINOMI DI BERNSTEIN
non sono ammessi elementi ripetuti si parla di disposizioni semplici altrimenti
di disposizioni con ripetizione. Nel primo caso deve essere ovviamente k n.
Per il numero di disposizioni di n elementi di classe k, si pu pensare di
avere n oggetti, a questo punto dovendo scegliere k di questi oggetti, avr n
modi di scegliere il primo, (n 1) per scegliere il secondo, e cos via no ad
arrivare ad avere (n k + 1) mdi di scegliere il k-esimo oggetto.
Il numero di disposizioni sar quindi dato da:
D
n,k
= n(n 1) . . . (n k + 1)
D
n,k
=
n!
(n k)!
E interessante notare che esiste una relazione fra il numero di disposi-
zioni ed il numero di permutazioni, infatti se volessi calcolare il numero di
disposizioni di n elementi di classe n, il calcolo diventerebbe:
D
n,k
= n(n 1) . . . (n n + 1)
D
n,k
=
n!
(n n)!
D
n,k
= n!
Considerazioni sul calcolo del fattoriale di un numero Il calcolo
del numero di disposizioni nel paragrafo precedente, stato possibile grazie
al fatto che 0! = 1, cosa che pu essere spiegata nel seguente modo.
Nella denizione come produttoria, la richiesta che 0! sia pari a uno si
accorda con la richiesta che il prodotto di zero fattori, il cosiddetto prodotto
vuoto, come la potenza nulla di un intero positivo, sia uguale ad 1. Per
convincersi ulteriormente di questo fatto, si pu anche pensare che:
2.2. COEFFICEINTE BINOMIALE 15
Data la denizione di fattoriale nella sua versione ricorsiva (che gi include
lo 0! come caso particolare), si pu pensare di utilizzarla per convincersi che
0! faccia veramente 1.
n! :=
_
_
_
1 se n = 0
n(n 1)! se n > 0
n N
0
Il vincolo che il numero del quale si vuole calcolare il fattoriale debba
appartenere a N
0
, ovvero allinsieme degli interi non negativi, dovuto al
fatto che nel calcolo del numero di disposizioni avrebbe poco senso parlare
di numeri negativi.
Applicando tale denizione al calcolo di 1! si ottiene (ignorando il caso
particolare!!):
1! 1
1! = 1(1 1)!
1! = 10!
1! = 0! 0! 1
Combinazione Nel calcolo combinatorio, se n e k sono due interi positivi,
si denisce combinazione di n elementi presi k alla volta (oppure di n elementi
di classe k) ogni sottoinsieme di k oggetti estratti da un insieme di n oggetti.
Se si impone la condizione che una combinazione non pu avere un elemento
ripetuto si parla di combinazioni semplici, altrimenti di combinazioni con
ripetizione. Nel primo caso deve essere ovviamente k n.
In entrambi i casi i sottoinsiemi si considerano indipendenti dallordine
degli elementi. Ad esempio, se siamo in presenza dellinsieme (p, q, r, s, t)
e prendiamo in esame le combinazioni di classe 3, non fa alcuna dierenza
considerare i gruppi prs, psr, rps, spr, rsp ed srp in quanto essi sono formati
16 CAPITOLO 2. I POLINOMI DI BERNSTEIN
RECURSIVE FUNCTION fattoriale(n) RESULT(fatt)
IMPLICIT NONE
INTEGER, INTENT(IN) :: n
INTEGER :: fatt
IF(n .EQ. 0) THEN
fatt = 1
ELSEIF ( n .GT. 0 ) THEN
fatt = n*fattoriale(n-1)
END IF
END FUNCTION fattoriale
Figura 2.1: Funzione FORTRAN per il calcolo del fattoriale di un numero
n, che sfrutta la denizione ricorsiva.
dagli stessi elementi, mentre prs ed srq sono considerate due combinazioni
distinte in quanto dieriscono in alcuni degli elementi.
Quindi si pu pensare al numero di combinazioni di n elementi di classe k
come il numero di disposizioni di n elementi di classe k, diviso per il numero
di permutazioni di k elementi.
P
n,k
=
n!
k! (n k)!

_
_
_
n, k N
0
n k
Tale espressione prende il nome di Coeciente binomiale o binomio di
Newton, essa compare nei polinomi che si usano per il calcolo delle curve di
Bzier, e da esso le curve di Bzier ereditano molte delle loro propriet.
In letteratura il binomio di Newton spesso rappresentato nel seguente
modo:
2.3. BINOMIO DI NEWTON E TRIANGOLO DI TARTAGLIA 17
FUNCTION binom(n,k) RESULT(bin)
IMPLICIT NONE
! ...Input variables
INTEGER, INTENT(IN) :: n, k
! ...Output variable
REAL(KIND=8) :: bin
! ...
IF ( k .LT. n .AND. k .GT. 0 ) THEN
bin = DBLE(fattoriale(n)) / &
DBLE(fattoriale(k)*fattoriale(n-k))
RETURN
ELSEIF ( n .EQ. k .OR. k .EQ. 0 ) THEN
bin = 1.
RETURN
ELSE
bin = 0.
END IF
END FUNCTION binom
Figura 2.2: Funzione FORTRAN per il calcolo del valore del coeciente
binomiale.
P
n,k
=
_
n
k
_

_
_
_
n, k N
0
n k
2.3 Binomio di Newton e triangolo di Tartaglia
I legami tra il binomio di Newton ed il triangolo di tartaglia sono molto
profondi e sono alla base degli algoritmi molto ecienti dal punto di vista
18 CAPITOLO 2. I POLINOMI DI BERNSTEIN
della stabilit numerica (DeCastejau) per la valutazione di un punto su di
una curva di Bzier.
Il teorema che lega un determinato coeciente nel triangolo di Tartaglia
al binomio di Newton detto teorema binomiale, per esso possibile dare una
dimostrazione intuitiva, dalla quale facile capire il legame, ed una induttiva
che pi legata al modo in cui sono poi costruiti gli algoritmi di calcolo.
(a + b)
n
=
n

k=0
_
n
k
_
a
nk
b
k
Dimostrazione intuitiva Il triangolo di tartaglia quello strumento che
mi permette di conoscere i coecienti dei vari termini che compaiono nello
sviluppo della potenza di un binomio, in particolare il problema pu essere
riassunto nel modo seguente:
Data una generica potenza di un binomio:
(a + b)
n
= (a + b) (a + b) . . . (a + b)
si interessati a capire quante volte nello sviluppo dei prodotti comparir
il generico termine della forma a
nk
b
k
con 0 k n.
Per semplicare possibile senza perdere di generalit utilizzare come
esempio il caso della quarta potenza del binomio.
(a + b)
4
= (a
1
+ b
1
) (a
2
+ b
2
) (a
3
+ b
3
) (a
4
+ b
4
)
dove i pedici rappresentano il gruppo al quale appartengono i termini.
Immaginando di dover calcolare quante volte compare il termine della
forma a
3
b, si pu procedere nel seguente modo:
2.3. BINOMIO DI NEWTON E TRIANGOLO DI TARTAGLIA 19
_

_
b
1
a
2
a
3
a
4
a
1
b
2
a
3
a
4
a
1
a
2
b
3
a
4
a
1
a
2
a
3
b
4
Poich tutti gli a

sono equivalenti (i pedici sono stati messi solo per


evidenziare come sono costruite le varie combinazioni), non mi interessano le
varie permutazioni, quindi la conclusione che ci sono 4 gruppi della forma
a
3
b nella quarta potenza del binomio (a + b).
Generalizzando possibile dire che data una generica potenza n di un bi-
nomio, per calcolare quante volte comparir il termine di tipo a
nk
b
k
, mi
basta calcolare il numero di combinazioni di n elementi di classe k, che
corrisponde al Binomio di Newton.
N
nk
=
n!
k! (n k)!
(2.1)
Dimostrazione induttiva Prima di procedere con questa dimostrazione
bisogna introdurre alcune propriet del coeciente binomiale, le quali sono
facilmente dimostrabili.
_

_
_
n
0
_
=
n!
0!(n0)!
_
n
0
_
=
n!
n!
_
n
0
_
= 1
_

_
_
n
n
_
=
n!
n!(nn)!
_
n
n
_
=
n!
n!
_
n
n
_
= 1
La prima corrisponde con laermare che esiste un solo insieme vuoto, e
20 CAPITOLO 2. I POLINOMI DI BERNSTEIN
quindi esiste una sola disposizione di n elementi di classe 0; mentre la seconda
corrisponde con il dire che esiste una sola disposizione di n elementi di classe
n.
_
n + 1
k + 1
_
=
_
n
k + 1
_
+
_
n
k
_
(n + 1)!
(k + 1)! (n k)!
=
n!
(k + 1)! (n 1 k)!
+
n!
k! (n k)!
(n 1 k)! =
(n k)!
(n k)
(k + 1)! = k! (k + 1)
(n + 1)!
(k + 1)! (n k)!
=
n!(n k)
(k + 1)! (n k)!
+
n! (k + 1)
(k + 1)! (n k)!
(n + 1)!
(k + 1)! (n k)!
=
n!
(k + 1)! (n k)!
(n k + k + 1)
(n + 1)!
(k + 1)! (n k)!
=
(n + 1) n!
(k + 1)! (n k)!
(n + 1)!
(k + 1)! (n k)!

(n + 1)!
(k + 1)! (n k)!
La propriet appena dimostrata, rappresenta il meccanismo di costruzione
del triangolo di Tartaglia, infatti ci dice che da due elementi vicini di grado
n, possibile ricavare un elemento di grado n + 1.
E ora possibile procedere alla dimostrazione per induzione del teorema
binomiale. La dimostrazione si basa sul fatto che possibile introdurre per
tale teorema un passo base per cui esso risulta banalmente vero, (sfruttando
la prima propriet):
2.3. BINOMIO DI NEWTON E TRIANGOLO DI TARTAGLIA 21
(a + b)
1
=
1

k=0
_
1
k
_
a
1k
b
k
=
_
1
0
_
a
1
b
0
+
_
1
1
_
a
0
b
1
= a + b
A questo punto si procede cercando di estendere quanto ricavato a qual-
siasi potenza, nello specico
(a + b)
n+1
= (a + b) (a + b)
n
(a + b)
n+1
= a (a + b)
n
+ b (a + b)
n
(a + b)
n+1
= a
n

k=0
_
n
k
_
a
nk
b
k
+ b
n

k=0
_
n
k
_
a
nk
b
k
(a + b)
n+1
=
n

k=0
_
n
k
_
a
nk+1
b
k
+
n

k=0
_
n
k
_
a
nk
b
k+1
Da qui, giocando sugli indici risulta possibile raccogliere lequazione in
modo da mettere in vista delle espressioni che permettano di sfruttare le
propriet sopra elencate.
(a + b)
n+1
=
_
n
0
_
a
n+1
+
n

k=1
_
n
k
_
a
nk+1
b
k
+
n1

k=0
_
n
k
_
a
nk
b
k+1
+
_
n
n
_
b
n+1
(a + b)
n+1
=
_
n
0
_
a
n+1
+
n1

k=0
_
n
k + 1
_
a
n(k+1)+1
b
k+1
+
n1

k=0
_
n
k
_
a
nk
b
k+1
+
_
n
n
_
b
n+1
(a + b)
n+1
=
_
n
0
_
a
n+1
+
n1

k=0
__
n
k
_
+
_
n
k + 1
__
a
nk
b
k+1
+
_
n
n
_
b
n+1
A questo punto basta raccogliere e la dimostrazione conclusa.
22 CAPITOLO 2. I POLINOMI DI BERNSTEIN
(a + b)
n+1
= a
n+1
+
n1

k=0
_
n + 1
k + 1
_
a
nk
b
k+1
+ b
n+1
(a + b)
n+1
= a
n+1
+
n

k=1
_
n + 1
k
_
a
n+1k
b
k
+ b
n+1
(a + b)
n+1
=
n+1

k=0
_
n + 1
k
_
a
n+1k
b
k
(a + b)
n
=
n

k=0
_
n
k
_
a
nk
b
k
2.4 Denizione dei polinomi di Bernstein
I polinomi di Bernstein sono una particolare classe di potenze di binomi in
cui i coecienti a e b hanno la seguente forma:
n

k=0
_
n
k
_
a
nk
b
k
con
_

_
a = (1 u)
b = u
Il generico polinomio di Bernstein assume quindi la forma:
_

_
B(u)
i,n

_
n
i
_
u
i
(1 u)
ni
u [0, 1], 0 i n
B(u)
i,n
0 u [0, 1], i < 0, i > n
B(u)
i,n
0 u [0, 1]
2.5. PROPRIET DEI POLINOMI DI BERNSTEIN 23
2.5 Propriet dei polinomi di Bernstein
I polinomi di Bernstein godono delle seguenti propriet:
Denizione ricorsiva
Derivata in funzione dei polinomi di grado inferiore
Punto di massimo
Variazione di segno
Non negativit
Partizione dellunit
Simmetria
2.5.1 Denizione Ricorsiva
Ogni polinomio di Bernstein ha una denizione ricorsiva. Tale propriet
deriva direttamente da una propriet del binomio di Newton, e pu esse-
re ricollegata al modo standard di costruire il triangolo di tartaglia, infatti
ogni livello del triangolo di tartaglia pu essere ricavato con una denizione
ricorsiva dal livello precedente.
24 CAPITOLO 2. I POLINOMI DI BERNSTEIN
_
n
i
_
=
_
n 1
i
_
+
_
n 1
i 1
_
n!
i!(n i)!
=
(n 1)!
i!(n 1 i)!
+
(n 1)!
(i 1)!(n i)!
n!
i!(n i)!
=
(n 1)!(n i)
i!(n i)!
+
(n 1)!i
i!(n i)!
n!
i!(n i)!
=
(n 1)!(n i) + (n 1)!i
i!(n i)!
n!
i!(n i)!
=
(n 1)!n
i!(n i)!
n!
i!(n i)!

n!
i!(n i)!
A questo punto facile vedere che una generica base di ordine n pu
essere espressa nel seguente modo:
B(u)
i,n
=
_
n
i
_
u
i
(1 u)
ni
=
_
n 1
i
_
u
i
(1 u)
ni
+
_
n 1
i 1
_
u
i
(1 u)
ni
= (1 u)
_
n 1
i
_
u
i
(1 u)
n1i
+ u
_
n 1
i 1
_
u
i
(1 u)
ni
= (1 u)B(u)
i,n1
+ uB(u)
i1,n1
Questa formulazione alla base di algoritmi ricorsivi che arrivano alla
soluzione attraverso schemi triangolari.
2.5. PROPRIET DEI POLINOMI DI BERNSTEIN 25
2.5.2 Derivata in funzione dei polinomi di grado infe-
riore
La derivata di un polinomio di Bernstein pu essere denita in maniera
ricorsiva partendo dai polinomi di Bernstein di grado inferiore.
E possibile inoltre denire in maniera generale la derivata r esima
dei polinomi di Bernstein, per farlo bisogna generalizzare la denizione, ed
immaginare che i due coecienti del binomio di Newton siano due funzioni
lineari di classe C1 di una variabile. Questa complicazione in realt serve
solo ad avere una modo generale per tenere conto del segno.
P(u)
i,n
=
n

i=0
_
n
i
_
a (u)
i
b (u)
ni
Il problema che ci si pone quello di calcolare il valore di:
d
r
du
r
P(u)
i,n
=
n

i=0
_
n
i
_
a (u)
i
b (u)
ni
Dimostrazione intiuitiva Per riuscire a calcolare tale derivata si inizia
con il calcolo della derivata prima:
dP(u)
i,n
du
r
=
_
n
i
_
_
ia (u)
i1
b (u)
ni
a

(u) + (n i)a (u)


i
b (u)
ni1
b

(u)
_
=
n!ia

(u)
i!(n i)!
a (u)
i1
b (u)
ni
+
n!(n i)b

(u)
i!(n i)!
a (u)
i
b (u)
ni1
=
n(n 1)!a

(u)
(i 1)!(n i)!
a (u)
i1
b (u)
ni
+
n(n 1)!b

(u)
i!(n i 1)!
a (u)
i
b (u)
ni1
= n
_
a

(u)
_
n 1
i 1
_
a (u)
i1
b (u)
ni
+ b

(u)
_
n 1
i
_
a (u)
i
b (u)
ni1
_
= n(a

(u) P(u)
i1,n1
+ b

(u) P(u)
i,n1
)
26 CAPITOLO 2. I POLINOMI DI BERNSTEIN
Osservando la forma ottenuta si possono fare 3 considerazioni su quale
sar la forma della derivata r esima
il coeciente moltiplicativo assumer la forma n(n 1) (n 2) (n r + 1)
i coecienti a

(u) e b

(u), diventerebbero come i coeciente della


potenza di un binomio, esprimibili quindi mediante un coeciente
binomiale
i polinomi che compaiono diventeranno sempre di pi, in particolare
andranno da P(u)
ir,nr
a P(u)
r,nr
Quindi sar possibile esprimere lr esima derivata nel seguente modo:
dP(u)
i,n
du
r
=
n!
(n r)!
_
r

j=0
_
r
j
_
P(u)
i(rj),nr
a

(u)
rj
b

(u)
j
_
Dimostrazione rigorosa In alternativa si pu procedere direttamente con
il calcolo delle derivate.
Infatti la derivata r esima di una funzione di una variabile pu essere
scritta nel seguente modo.
d
r
du
r
a (u)
n
=
n!
(n r)!
a (u)
nr
a

(u)
r
Pi complicato il caso del prodotto di due funzioni di una variabile.
Ancora una volta si pu notare che nel generico caso di derivata r
esima, compariranno tutti i termini da a
r
b
0
, a
r1
b
1
, , a
1
b
r1
, a
0
b
r
, con dei
coecienti moltiplicativi dati dal numero di combinazioni possibili per una
data congurazione ad ordine di derivata ssato.
In pratica il risultato :
d
r
du
r
a (u)
n
b (u)
m
=
r

j=0
_
r
j
_
a

(u)
rj
b

(u)
j
n!
(n r + j)!
m!
(mr)!
a (u)
nr+j
b (u)
mr
Ricordandosi la forma da cui si partiva, si pu eseguire la seguente sosti-
tuzione nella formula appena trovata:
2.5. PROPRIET DEI POLINOMI DI BERNSTEIN 27
_
_
_
n = i
m = n i
Ci che si ottiene :
d
r
du
r
a (u)
i
b (u)
ni
=
r

j=0
_
r
j
_
a

(u)
rj
b

(u)
j
i!
(i r + j)!
n i!
(n i r)!
a (u)
ir+j
b (u)
nij
r

j=0
_
r
j
_
a

(u)
rj
b

(u)
j
n!
(n r)!
i! (n i)!
n!
(n r)!a (u)
ir+j
b (u)
nij
(i r + j)! (n r i)!
r

j=0
_
r
j
_
a

(u)
rj
b

(u)
j
n!
(n r)!
_
n
i
_
1
_
(n r)!
(i r + j)!
_
a (u)
ir+j
b (u)
nij
r

j=0
_
r
j
_
a

(u)
rj
b

(u)
j
n!
(n r)!
_
n
i
_
1
P(u)
ir+j,nr
Adesso possibile prendere il problema di partenza e sostituire la funzione
trovata:
dP(u)
i,n
du
r
=
d
du
r
_
n
i
_
a (u)
i
b (u)
ni
=
n!
(n r)!
_
r

j=0
_
n
i
__
n
i
_
1
_
r
j
_
P(u)
i(rj),nr
a

(u)
rj
b

(u)
j
_
=
n!
(n r)!
_
r

j=0
_
r
j
_
P(u)
i(rj),nr
a

(u)
rj
b

(u)
j
_
Ricordandosi la denizione dei polinomi di Bernstein, si possono sostituire
le derivate dei coecienti
d
r
B(u)
i,n
du
r
=
n!
(n r)!
_
r

j=0
_
r
j
_
B(u)
i(rj),nr
(1)
j
_
(2.2)
28 CAPITOLO 2. I POLINOMI DI BERNSTEIN
Per esempio ora possibile calcolare come fatta la derivata prima di un
polinomio di Bernstein semplicemente imponendo r = 1:
d
r
B(u)
i,n
du
r
= n
_
B(u)
i1,n1
B(u)
i,n1
_
2.5.3 Punto di massimo
Ogni polinomio di Bernstein ha un solo massimo nellintervallo [0, 1],nel pun-
to di coordinate i/n. Questa propriet pu essere ricavata semplicemente
azzerando la derivata di un generico polinomio di Bernstein:
d
du
B(u)
i,n
= 0
n(B(u)
i1,n1
B(u)
i,n1
) = 0
n
_
(n 1)!
(i 1)! (n i)!
(1 u)
ni
u
i1

(n 1)!
i! (n 1 i)!
(1 u)
n1i
u
i
_
= 0
(i 1)! =
i!
i
(n i 1)! =
(n i)!
(n i)
n
_
(n 1)!i
i! (n i)!
(1 u)
ni
u
i1

(n 1)! (n i)
i! (n i)!
(1 u)
n1i
u
i
_
= 0
_
n
i
_
_
i (1 u)
ni
u
i1
(n i) (1 u)
n1i
u
i
_
= 0
_
n
i
_
_
(1 u)
n1i
u
i1
((1 u) i (n i) u)
_
= 0
A questo punto si vede che la derivata pu azzerarsi in tre casi:
2.5. PROPRIET DEI POLINOMI DI BERNSTEIN 29
_

_
u
i1
= 0
(1 u)
ni1
= 0
((1 u) i (n i) u) = 0

_
u = 0 con (i 1) = 0
u = 1 con (n i 1) = 0
u =
i
n
n > 0, 0 i n
Che equivale a dire che:
B

(u)
i,n
ha una radice con molteplicit i 1 in 0
B

(u)
i,n
ha una radice con molteplicit n i 1 in 1
B

(u)
i,n
ha una radice con molteplicit 1 in
i
n
Inoltre certo che tale valore sia sempre compreso nellintervallo [0, 1],
perch, per come denita una disposizione, (e quindi per denizione del
coeciente binomiale stesso ) deve essere che i n.
E importante notare che per coerenza i polinomi di Bernstein assumono
valori diversi da zero solo per 0 i n.
Inoltre da questa denizione si pu anche vedere che i polinomi estremali
non hanno punti in cui si azzera la derivata nellintervallo (0, 1) infatti sono
gli unici che possono assumere valore diverso da 0 sul bordo del dominio.
Il fatto poi che la derivata di un polinomio di Bernstein abbia n2 radici
alle estremit (in 0 o in 1), unito con il fatto che il polinomio originale ha
tutte le sue n radici alle estremit, ci fa capire che da un generico polinomio
di Bernsten pu avere una sola derivata estremale non nulla.
2.5.4 Non negativit
Questa propriet deriva direttamente da come sono de niti, poich nellin-
tervallo [0, 1] ogni polinomio dato dal prodotto di tre termini tutti maggiori
di 0.
30 CAPITOLO 2. I POLINOMI DI BERNSTEIN
Volendo si pu dimostrare per induzione partendo dalla denizione ri-
corsiva, ed osservando che i polinomi di grado 0 sono sicuramente positivi,
e tutti quelli di grado superiore possono essere ricavati da questi polinomi
come somma ripetuta di quantit non negative.
B (u)
0,1
= (1 u)B(u)
0,0
+ uB(u)
1,0
B (u)
1,1
= (1 u)B(u)
1,0
+ uB(u)
0,0
Da cui si vede che essendo per ipotesi i termini u ed 1u sempre maggiori
o uguali a 0, non possono comparire componenti negative nellintervallo [0, 1].
2.5.5 Partizione dellunit
La partizione dellunit una propriet molto importante quando si utilizza-
no i polinomi di Bernstein nella computer graphics. In particolare, come si
vedr pi avanti questa caratteristica garantisce poi le propriet di inviluppo
convesso delle curve che si costruiranno utilizzando questa base.
Per dimostrare questa propriet suciente ricordarsi alla denizione del
binomio di Newton:
n

k=0
_
n
k
_
(1 u)
nk
u
k
= (u + (1 u))
n
= 1 k [0, n]
Dalla quale risulta evidente
2.5.6 Simmetria
Ogni polinomio di Bernstein simmetrico nellintervallo [0, 1] (con centro nel
punto di coordinata u = 0.5) rispetto al suo complementare ( k (n k) ).
Per dimostrare questa propriet bisogna dimostrare per prima cosa che
in un binomio di Newton gli elementi complementari hanno lo stesso valore:
2.6. CAMBIAMENTO DI BASE DELLA BASE DI BERNSTEIN 31
_
n
k
_
=
_
n
n k
_
n!
k! (n k)!
=
n!
(n k)! (n n + k)!
n!
k! (n k)!
=
n!
(n k)!k!
La simmetria rispetto al punto u = 0.5 implica un invarianza rispetto
alla trasformazione u (1 u) u [0, 1].
Quindi applicando contemporaneamente le due trasformazioni possibile
scrivere:
B
n,k
(u) =
_
n
k
_
(1 u)
nk
u
k
B
n,k
(u) =
_
n
n k
_
(1 1 + u)
nn+k
(1 u)
nk
B
n,k
(u) = B
n,nk
(u)
2.6 Cambiamento di base della base di Bern-
stein
Dal momento che la base di potenze 1, u, u
2
, ..., u
n
forma una base dello spazio
dei polinomi di grado minore o uguale a n, ogni polinomio di Bernstein di
grado n pu essere scritto in termini di base di potenze.
Tale cambiamento di base pu essere visto dal punto di vista matriciale,
e tali matrici possono essere ricavate per via analitica.
32 CAPITOLO 2. I POLINOMI DI BERNSTEIN
_

_
U =
_
1 u u
n1
u
n
_
B =
_
B ( u)
0,n
B ( u)
1,n
B ( u)
n1,n
B ( u)
n,n
_
T =
_

_
t
0,0
0 0 0
t
1,0
t
1,1
0 0 0
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
t
n1,0
t
n1,1
t
n1,n1
0
t
n,0
t
n,1
t
n,n1
t
n,n
_

_
T
1
=
_

_
t
1
0,0
0 0 0
t
1
1,0
t
1
1,1
0 0 0
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
t
1
n1,0
t
1
n1,1
t
1
n1,n1
0
t
1
n,0
t
1
n,1
t
1
n,n1
t
1
n,n
_

_
Lo scopo quindi quello di cercare quale forma abbiano i coecienti t
n,k
,
per farlo si pu procedere nel seguente modo:
B
k,n
=
_
n
k
_
(1 u)
nk
u
k
Questa formulazione per non va bene perch si cerca di arrivare ad una
forma del tipo:
B
k,n
=
n

i=0
t
i,k
u
i
2.6. CAMBIAMENTO DI BASE DELLA BASE DI BERNSTEIN 33
Si pu per notare che nellespressione gura il quadrato di un binomio,
il quale esprimibile a sua volta come un binomio di Newton:
B
k,n
=
_
n
k
_
u
k
(1 u)
nk
B
k,n
=
_
n
k
_
u
k
nk

i=0
_
n k
i
_
(u)
i
1
nki
B
k,n
=
_
n
k
_
u
k
nk

i=0
(1)
i
_
n k
i
_
u
i
B
k,n
=
nk

i=0
(1)
i
_
n
k
__
n k
i
_
u
i+k
B
k,n
=
n

i=k
(1)
ik
_
n
k
__
n k
i k
_
u
i
A questo punto bisogna rielaborare i due binomi di Newton, in modo da
semplicare la notazione
_
n
k
__
n k
i k
_
=
n!
k! (n k)!
(n k)!
(i k)! (n i)!
=
n!
k! (i k)! (n i)!
i!
i!
=
n!
i! (n k)!
i!
k! (i k)!
=
_
n
i
__
i
k
_
34 CAPITOLO 2. I POLINOMI DI BERNSTEIN
Quindi sostituendo si ottiene:
B
k,n
=
n

i=k
(1)
ik
_
n
i
__
i
k
_
u
i
Per come denito il binomio di Newton si vede che:
_
i
k
_
= 0 k > i
Quindi si pu estendere i limiti della sommatoria senza commettere errori.
B
k,n
=
n

i=0
(1)
ik
_
n
i
__
i
k
_
u
i
B
k,n
=
n

i=0
t
i,k
u
i
t
i,k
= (1)
ik
_
n
i
__
i
k
_
Ora possibile porsi anche il problema inverso, cio dato il vettore con-
tenente le basi valutate nei punti u, cercare il vettore con questi punti.
In realt basterebbe invertire la matrice T, tuttavia possibile ricavare
direttamente una la formula per costruire la matrice inversa.
Il problema pu essere formulato nel seguente modo:
u
k
=
n

i=0
B (u)
i,n
x
i,k
Dove gli x
i,k
sono i coecienti cercati, ovvero quelli che costituiranno la
matrice inversa.
u
k
=
n

i=0
_
n
i
_
(1 u)
ni
u
i
x
i,k
1 =
n

i=0
_
n
i
_
(1 u)
ni
u
ik
x
i,k
2.6. CAMBIAMENTO DI BASE DELLA BASE DI BERNSTEIN 35
Dalle propriet dei polinomi di Bernstein e pi in generale da quelle del
binomio di Newton si sa che un generico polinomio di Benrnstein gode della
propriet detta Partizione dellunit, quindi per fare in modo che lugua-
glianza sia vericata dovr far in modo che x
i,k
trasformi largomento della
somma in un polinomio di Bernstein.
Quindi attualmente largomento della sommatoria :
n!
i! (n i)!
(1 u)
ni
u
ik
x
i,k
ma si vorrebbe che fosse:
(n k)!
(i k)! (n i)!
(1 u)
ni
u
ik
= B (u)
nk,ik
Si procede a calcolare il valore di x
i,k
eguagliando le due espressioni
n!
i! (n i)!
(1 u)
ni
u
ik
x
i,k
=
(n k)!
(i k)! (n i)!
(1 u)
ni
u
ik
x
i,k
=
i! (n k)!
n! (i k)!
k!
k!
x
i,k
=
i!
k! (i k)!
k! (n k)!
n!
x
i,k
=
_
i
k
_
_
n
k
_
Riassumendo, sempre possibile rappresentare una base polinomiale in
forma di Bernstein e viceversa, inoltre la matrice che caratterizza la base
di Bernstein triangolare inferiore e questo signica che il rango pari alla
dimensione della matrice; questo implica che i polinomi di Bernstein di grado
n siano linearmente indipendenti (ortogonali), e formano una base per lo
spazio R
N
.
_

_
B = UT
U = BT
1
36 CAPITOLO 2. I POLINOMI DI BERNSTEIN
2.7 Algoritmi per il calcolo dei Polinomi
Gli algoritmi per il calcolo dei polinomi di Bernstein si possono raggruppare
in due categorie:
Algoritmi che sfruttano la denizione ricorsiva dei polinomi per calco-
larne il valore in un punto
Algoritmi che si basano sulla formulazione matriciale, e sfruttano la
rappresentazione in basi di potenze
Algoritmi che sfruttano la denizione ricorsiva Questi algoritmi so-
no molto ecienti dal punto di vista numerico per il fatto che sfruttano le
propriet dei polinomi di Bernstein, sono anche molto stabili, in quanto ri-
chiedono solo di eettuare una serie di interpolazioni, quindi non entrano in
gioco numeri molto pi grandi o pi piccoli rispetto a quelli caratteristici del
problema che si sta esaminando.
Tuttavia, richiedono di essere rilanciati per il calcolo di ogni singolo punto,
e se ci sono molti punti da valutare diventano pesanti, pur conservando le
loro ottime doti di stabilit numerica.
In particolare si possono costruire due algoritmi, il primo serve per valu-
tare tutti i polinomi di Bernstein di un determinato grado, mentre il secondo
serve per valutare un determinato polinomio di Bernstein di un determinato
grado.
Come detto questi algoritmi sono semplici e per funzionare sfruttano
esclusivamente le seguenti tre propriet:
_

_
B(u)
i,n
= (1 u)B(u)
i,n1
+ uB(u)
i1,n1
B(u)
i,n
0 i < 0, i > n
B(u)
0,0
1
2.7. ALGORITMI PER IL CALCOLO DEI POLINOMI 37
Conoscendo il parametro u per il quale si vuole valutare il polinomio si
possono ricostruire in cascata i valori di tutti i polinomi che intercorrono nel
calcolo del valore che interessa.
Come possibile vedere in gura 2.7, lalgoritmo strutturato nel seguen-
te modo:
1. Inizializzazione di un vettore di dimensione (n + 1), in cui tutti gli
elementi varranno 0, a meno dellelemento nella posizione ni il quale
varr 1. A questo punto ci si trova con un vettore ordinato nel seguente
modo:
_
B
in,0
B
in+1,0
B
0,0
B
i,0
_
2. Lalgoritmo aggiorner gli elementi di tale vettore, ed andr a conver-
genza in n passi, come mostrato in gura 2.7. Da notare che ad ogni
iterazione il programma calcoler lelemento i-esimo del vettore utiliz-
zando gli elementi i ed i + 1, e sovrascrivendo il dato che stava nella
posizione i, che non ha pi alcuna utilit.

.
.
.

.
.
.

B
in,0
B
in+1,0
B
0,0
B
i1,0
B
i,0

B
i2,n2
B
i1,n2
B
i,n2

B
r
r
rj

B
r
r
rj

B
r
r
rj
B
i1,n1
B
i,n1

B
i,n
Figura 2.3: Schema dellalgoritmo per il calcolo del valore di un determinato
polinomio di Bernstein in un dato punto
38 CAPITOLO 2. I POLINOMI DI BERNSTEIN

.
.
.

.
.
.

B
n,n
B
n1,n
B
i,n
B
1,n
B
0,n

0
B
2,2
B
1,2
B
0,2
0

B
r
r
rj

B
r
r
rj

B
r
r
rj

B
r
r
rj
r
r
rj

B
0
B
1,1
B
0,1
0

0
B
0,0
0
Figura 2.4: Schema dellalgoritmo per il calcolo del valore di tutti i polinomi
di Bernstein di un determinato grado
Qui di seguito presentato il codice scritto in FORTRAN che implementa
lalgoritmo appena descritto.
2.8 Esempi
2.8. ESEMPI 39
FUNCTION Bernstein( i, n, u ) RESULT(B)
INTEGER , INTENT(IN) :: i, n
REAL(KIND=8), INTENT(IN) :: u
REAL(KIND=8) :: B
INTEGER :: i, j
REAL(KIND=8) :: cu
REAL(KIND=8), DIMENSION(0:n) :: tmp
tmp = 0.
tmp(n-i) = 1.
cu = 1. - u
DO i = 1, n
DO j = n, i, -1
tmp(j) = cu*tmp(j) + u*tmp(j-1)
END DO
END DO
B = tmp(n)
END FUNCTION Bernstein
??
Figura 2.5: Script FORTRAN per la valutazione di un particolare polinomio
di Benrnstein dati il grado, lindice, e il parametro
40 CAPITOLO 2. I POLINOMI DI BERNSTEIN
FUNCTION AllBernstein( n, u ) RESULT(B)
INTEGER , INTENT(IN) :: n
REAL(KIND=8), INTENT(IN) :: u
REAL(KIND=8), DIMENSION(0:n) :: B
INTEGER :: j. k
REAL(KIND=8) :: temp, saved, cu
B(0) = 1.
cu = 1.-u
DO j = 1, n
saved = 0.
DO k = 0, j-1
temp = B(k)
B(k) = saved + cu*temp
saved = u*temp
END DO
B(j) = saved
END DO
END FUNCTION AllBernstein
Figura 2.6: Script FORTRAN per la valutazione dei polinomi di Benrnstein
di un certo grado, per un determinato valore del parametro u
2.8. ESEMPI 41
FUNCTION BernInvBasis(n) RESULT(Bas)
INTEGER, INTENT(IN) :: n
REAL(KIND=8), DIMENSION(0:n,0:n) :: Bas
INTEGER :: i, k
Bas = 0.
DO i = 0, n
DO k = 0, i
Bas(i,k) = binom(i,k) / binom(n,k)
END DO
END DO
END FUNCTION BernInvBasis
FUNCTION BernBasis(n) RESULT(Bas)
INTEGER, INTENT(IN) :: n
REAL(KIND=8), DIMENSION(0:n,0:n) :: Bas
INTEGER :: i, k
Bas = 0.
DO i = 0, n
DO k = 0, i
Bas(i,k) = (-1)**(i-k) * binom(n,i) * binom(i,k)
END DO
END DO
END FUNCTION BernBasis
42 CAPITOLO 2. I POLINOMI DI BERNSTEIN
Figura 2.7: Polinomi di Bernstein di secondo grado e derivate prime
Figura 2.8: Polinomi di Bernstein di terzo grado e derivate prime
2.8. ESEMPI 43
Figura 2.9: Polinomi di Bernstein di quarto grado e derivate prime
Figura 2.10: Polinomi di Bernstein di sesto grado e derivate prime
44 CAPITOLO 2. I POLINOMI DI BERNSTEIN
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
u
f
(
u
)
Figura 2.11: Polinomi di Bernstein di quindicesimo grado
CAPITOLO 3
La curve di Bzier
La teoria quando si sa tutto e
niente funziona. La pratica
quando tutto funziona e nessuno
sa il perch. Noi abbiamo messo
insieme la teoria e la pratica:
non c niente che funzioni... e
nessuno sa il perch!
Albert Einstein
Pierre tienne Bzier (nato a Parigi il 1

settembre 1910 e morto a Parigi


il 25 novembre 1999) stato un ingegnere e matematico francese, creatore
delle curve di Bzier e delle superci di Bzier che sono ora alla base della
maggior parte del Computer Aided Design e dei sistemi di computer gra-
ca. Nato a Parigi, Bzier ottenne la laurea in ingegneria meccanica presso la
cole Nationale Suprieure des Arts et Mtiers nel 1930. Si guadagn una
seconda laurea in ingegneria elettrica nel 1931 alla cole Suprieure dlec-
tricit, nonch un dottorato, nel 1977, in matematica allUniversit di Parigi.
Lavor presso la Renault dal 1933 al 1975, dove realizz il suo sistema UNI-
SURF CAD CAM.Fino ai primi anni 60 fece una bella carrirea in Renault
dove raggiusela posizione di Direttore di metodi meccanici, poi in seguito
45
46 CAPITOLO 3. LA CURVE DI BZIER
a divergenze con i suoi superiori fu messo da parte. Questa semilibert gli
permise di coltivare le sue passioni e di iniziare a dedicarsi alla modellazine
di superci, campo che a quel tempo era totalmente inesplorato. Dal 1968
al 1979 fu Professore di Ingegneria della Produzione al Conservatoire Natio-
nal des Arts et Mtiers. Nel 1985 fu insignito allACM SIGGRAPH con un
premio Steven A. Coons per aver dedicato la sua vita alla computer graca
e alle tecniche interattive.
3.1 Le curve di Bzier
Una curva parametrica, una funzione vettoriale di 1 parametro u, e rap-
presenta la mappa di un segmento di linea retta nello spazio Euclideo tridi-
mensionale.
C(u) = (x(u) , y (u) , z (u)) con u R
Siano {w
0
, w
1
, w
2
, , w
n
}, n + 1 punti, e siano B(u)
i,n
i polinomi di
Bernstein di grado n, allora lente rappresentato dallequazione parametrica
P (u) =
n

i=0
B(u)
i,n
w
i
u [0, 1]
viene detto Curva di Bzier di grado n.
I punti {w
0
, w
1
, w
2
, , w
n
} sono detti punti di controllo per P (u); in
particolare w
0
e w
n
sono detti punti di controllo estremi, mentre gli altri si
chiamano punti di inuenza.
La spezzata ottenuta congiungendo i punti di controllo (in ordine crescen-
te) con segmenti di retta viene detta poligono di controllo
3.2 Propriet delle curve di Bzier
Le curve di Bzier godono delle seguenti propriet
Derivata in funzione delle curve di grado inferiore
3.2. PROPRIET DELLE CURVE DI BZIER 47
48 CAPITOLO 3. LA CURVE DI BZIER
Interpolazione ai punti di controllo estremi
Poligono di controllo tangente alla curva nei punti di controllo estremi
Inviluppo convesso
Invarianza per trasformazioni ani
Precisione lineare
Approssimazione di forma
Suddivisione
3.2.1 Derivata
Come gi visto per i polinomi di Bernstein, anche per le curve di Bzier che
li usano come base possibile calcolare in forma chiusa la derivata.
Il problema che si pone quindi quello di calcolare:
d
r
P (u)
du
r
=
d
r
du
r
_
n

i=0
B(u)
i,n
w
i
_
Che, visto che i punti di controllo non dipendono dal parametro u, e che
la derivazione un operatore lineare pu essere riscritto nel seguente modo:
d
r
P (u)
du
r
=
n

i=0
__
d
r
du
r
B(u)
i,n
_
w
i
_
In questultima espressione stata messa in luce la derivata di un generico
polinomio di Bernstein la quale era stata calcolata in 2.5.2 quindi, sostituendo
lequazione 2.2 si ottiene:
d
r
P (u)
du
r
=
n

i=0
__
n!
(n r)!
r

j=0
_
r
j
_
B(u)
i(rj),nr
(1)
j
_
w
i
_
A questo punto lo scopo quello di cercare di giocare sugli indici per
portare i polinomi di Bernstein fuori dalla sommatoria su j, in modo da
3.2. PROPRIET DELLE CURVE DI BZIER 49
poter rappresentare la derivata della curva di Bzier come unaltra curva di
Bzier con i pesi cambiati.
A questo scopo si introduce il seguente cambio di indici:
k i (r j) i = k + r j
Da cui si possono ricalcolare i limiti della sommatoria, ovviamente biso-
gner anche invertire gli ordine della sommatoria in quanto applicando questa
sostituzione lindice k che andr a sostituire i,verr a dipendere dallindice r.
_
_
_
i = 0 k + r j = 0 k = j r
i = n k + r j = n k = n r + j
Sostituendo ed invertendo lordine delle sommatorie si ottiene:
d
r
P (u)
du
r
=
n!
(n r)!
_
r

j=0
_
r
j
_
(1)
j
nr+j

k=jr
B(u)
k,nr
w
k+rj
_
Osservando i limiti della sommatoria su k possibile fare le seguenti
considerazioni:
il limite inferiore pu assumere come valore massimo 0, che i l minimo
valore per cui i polinomi di Bernstein sono non nulli, si pu quindi
forzare questo valore ad essere sempre 0
il limite superiore pu assumere come valore minimo n r, che il
massimo valore per cui i polinomi di Bernstein sono non nulli, si pu
quindi forzare questo valore ad essere sempre n r
Questa operazione ci porta a rendere le due sommatorie indipendenti una
dalaltra, e quindi permette di scrivere:
d
r
P (u)
du
r
=
n!
(n r)!
nr

k=0
_
B(u)
k,nr
r

j=0
_
(1)
j
_
r
j
_
w
k+rj
_
_
50 CAPITOLO 3. LA CURVE DI BZIER
A questo punto possibile denire i nuovi punti di controllo che permet-
tono di costruire la curva derivata
w
r
k

n!
(n r)!
r

j=0
_
(1)
j
_
r
j
_
w
k+rj
_
E quindi la derivata di una curva di Bzier risulta essere:
d
r
P (u)
du
r
=
nr

k=0
_
B(u)
k,nr
w
r
k
_
In 3.1 possibile vedere un algoritmo che calcola i pesi da utilizzare per
il calcolo delle derivate, tale algoritmo sfrutta la propriet del coeciente
binomiale di poter essere espresso in forma ricorsiva, in questo modo ad ogni
iterazione non si deve calcolare tutto il valore del coeciente binomiale ma
solo aggiornare quello calcolato al passo precedente. Stessa cosa viene fatta
per il calcolo del segno, in quanto lelevamento a potenza unoperazione
molto pi pesante in termini di colpi di clock rispetto alla moltiplicazione.
3.2.2 Interpolazione dei punti estremi
Come visto in 2.5.3 sono gli unici che possono assumere valori diversi da zero
sul bordo del dominio, quindi immediato vedere che:
_
_
_
P (u = 0) =

n
i=0
_
B(u = 0)
i,n
w
i
_
P (u = 0) =

n
i=1
_
B(u = 1)
i,n
w
i
_
Ma ricordando la denizione di polinomio di Bernstein si vede che:
_
_
_
B(u = 0)
i,n
=
_
n
i
_
(1 0)
ni
0
i
B(u = 1)
i,n
=
_
n
i
_
(1 1)
ni
1
i
Si vede facilmente che gli unici polinomi diversi da zero sono quelli estre-
mali in quanto sono gli unici in grado di far comparire uno 0 allesponente e
quindi far saltar fuori uno 0
0
= 1
3.2. PROPRIET DELLE CURVE DI BZIER 51
SUBROUTINE WeightDer( P, r, Pr )
REAL(KIND=8), DIMENSION(:), INTENT(IN) :: P
INTEGER, INTENT(IN) :: r
REAL(KIND=8), DIMENSION(0:SIZE(P)-r), INTENT(OUT) :: Pr
REAL(KIND=8), DIMENSION(0:r) :: QK
REAL(KIND=8) :: CK
INTEGER :: n, i, k
!
n = SIZE(P,1)-1
CK = n
QK(0) = 1.
DO k = 1, r-1
CK = CK*(n-k)
QK(k) = -1 * QK(k-1) * (n-k+1) / k
END DO
QK(r) = -1 * QK(r-1) * (n-r+1) / r
!
DO i = 0, n-r
Pr(i) = 0.0
DO k = 0, r
Pr(i) = Pr(i) + QK(k)*P(i+r-k)
END DO
Pr(i) = CK*Pr(i)
END DO
END SUBROUTINE WeightDer
Figura 3.1: Script FORTRAN per il calcolo dei pesi da usare nella valutazione
delle derivate
52 CAPITOLO 3. LA CURVE DI BZIER
_
_
_
B(u = 0)
0,n
=
_
n
0
_
(1 0)
n0
0
0
B(u = 1)
n,n
=
_
n
n
_
(1 1)
nn
0
1
I coecienti binomiali sono unitari e sparisce tutto, rimane solo un coef-
ciente unitario a moltiplicare il peso di estremit.
_
_
_
B(u = 0)
0,n
= 1
B(u = 1)
n,n
= 1
3.2.3 Tangenza nei punti estremi
Anche in questo caso immediato vedere, basta calcolare la derivata prima
di una curva di Bzier nei punti estremi e vericare che il peso in questi punti
sia proporzionale a coeciente angolare del poligono di controllo negli stessi.
Rielaborando lespressione dei pesi nella derivata si ottiene:
w
1
k
=
n!
(n 1)!
1

j=0
_
(1)
j
_
1
j
_
w
k+1j
_
w
1
k
= n(w
k+1
w
k
)
Daltra parte la derivata espressa nel seguente modo:
dP (u)
du
=
n1

i=0
_
B(u)
i,n1
w
1
i
_
Che come visto nel paragrafo precedente, per la propriet di interpolazio-
ne agli estremi, se valutata in 0 ed in 1 restituisce esattamente il valore dei
pesi.
3.2.4 Inviluppo convesso
Una curva di Bzier completamente contenuta nellinviluppo convesso dei
vertici w
i
del poligono di controllo. Questa propriet deriva dal fatto che la
3.2. PROPRIET DELLE CURVE DI BZIER 53
somma delle funzioni base di Bernstein pari ad 1 e che ogni funzione base
non negativa nellintervallo di denizione.
3.2.5 Invarianza per trasformazioni ani
Una curva di Bzier invariante per trasformazioni ani; cio la curva di
Bzier generata dai punti di controllo trasformati mediante trasformazione af-
ne uguale alla curva di Bzier generata dai punti di partenza e trasformata
con la medesima trasformazione ane.
Una generica trasformazione ane pu essere rappresentata nel seguente
modo:
X
p
= R
p,q
x
q
+ b
p
Si immagini di avere una generica curva in uno spazio Nddimensionale,
parametrizzata secondo Bzier, allora le sue coordinate potranno essere scrit-
te come:
x =
_
_
_
_
_
_
_
_

n
i=0
_
B(u)
i,n
w
1,i
_

n
i=0
_
B(u)
i,n
w
2,i
_
.
.
.

n
i=0
_
B(u)
i,n
w
Nd,i
_
_
_
_
_
_
_
_
_
La trasformazione si pu quindi riscrivere nel seguente modo,tenendo con-
to del fatto che le basi di Bernstein godono della propriet di essere partizioni
dellunit.
X
p
=
Nd

q=1
_
R
p,q
n

i=0
_
B(u)
i,n
w
q,i
_
_
+ b
p
n

i=0
B(u)
i,n
Che raccogliendo e cambiando di ordine le sommatorie pu essere riscritta
come:
X
p
=
n

i=0
_
B(u)
i,n
_
Nd

q=1
R
p,q
w
q,i
+ b
p
__
54 CAPITOLO 3. LA CURVE DI BZIER
Che la dimostrazione che la curva trasformata equivale alla curva co-
struita su punti trasformati.
3.2.6 Suddivisione
Una importante caratteristica delle curve di Bzier, quella di poter essere
suddivise, ovvero data una generica curva, ed un punto su di essa sem-
pre possibile trovare in forma chiusa i poligoni di controllo delle due curve
risultanti dalla suddivisione della curva originale nel punto dato.
Questa propriet risulta molto utile soprattutto in due casi:
se si immagina di avere un algoritmo che intersechi due curve e le
debba ritagliare, in questo caso si potrebbe costruire una nuova curva
esattametne nei vincoli dati.
nel caso si debbano realizzare algoritmi per il rendering di una curva
Per dimostrare tale propriet bisogna prima provare i seguenti lemmi:
Lemma 1
_

_
w
j
k
=

j
i=0
B(u)
i,j
w
i+k
0 k n
w
j
k
=
_
(1 u) w
j1
k
+ uw
j1
k+1
_
Tale lemma pu essere dimostrato per induzione su j, quindi si dimostrer
per prima cosa che vero per j = 1, e poi assumendo che si a vero per j 1
si dimostrer che vero anche per j.
3.2. PROPRIET DELLE CURVE DI BZIER 55
Caso in cui j = 1
w
1
k
=
1

i=0
B(u)
i,1
w
i+k
= B(u)
0,1
w
0+k
+B(u)
1,1
w
k+1
= (1 u) w
j1
0+k
+ uw
j1
k+1
Caso generico
w
j
k
=
j

i=0
B(u)
i,j
w
i+k
Attraverso la denizione ricorsiva possibile esprimere i polinomi di
Bernstein di grado j in funzione dei polinomi di grado j 1.
w
j
k
=
j

i=0
_
(1 u) B(u)
i,j1
+ uB(u)
i1,j1
_
w
i+k
A questo punto possibile separare la sommatoria in due e sfruttando il
fatto che i polinomi di Benrstein sono nulli nei casi in cui i < 0 e i > j
possibile riarrangiare gli indici.
w
j
k
=
j1

i=0
(1 u) B(u)
i,j1
w
i+k
+
j

i=1
uB(u)
i1,j1
w
i+k
=
j1

i=0
(1 u) B(u)
i,j1
w
i+k
+
j1

i=0
uB(u)
i,j1
w
i+k+1
= (1 u)
j1

i=0
B(u)
i,j1
w
i+k
+ u
j1

i=0
B(u)
i,j1
w
i+k+1
Come detto si procede liptesi induttiva possibile assumere vero il caso
j 1, quindi la relazione sopra esposta diventa:
56 CAPITOLO 3. LA CURVE DI BZIER
w
j
k
= (1 u) w
j1
k
+ ub
j1
k+1
Lemma 2 Inquesto caso si cerca di dimostrare come sia possibile esprimere
sotto forma di prodotto di basi di Bernstein una riparametrizzazione:
B(u
0
u)
i,n
=
n

j=0
B(u
0
)
i,j
B(u)
j,n
u
0
[0, 1]
Anche in questo caso sar necessario procedere per induzione, infatti si
considerer prima il caso in cui n = 1, e poi, assumendo che si avera per n si
cercher di dimostrarla per n + 1.
Caso n = 1
B(u
0
u)
i,1
=
1

j=0
B(u
0
)
i,j
B(u)
j,1
= B(u
0
)
i,0
B(u)
0,1
+B(u
0
)
i,1
B(u)
1,1
Da cui possibile vedere che lespressione vericata per i due polinoi di
primo grado
_

_
B(u
0
u)
0,1
= B(u
0
)
0,0
B(u)
0,1
+B(u
0
)
0,1
B(u)
1,1
B(u
0
u)
1,1
= B(u
0
)
1,0
B(u)
1,1
+B(u
0
)
1,1
B(u)
1,1
Che sviluppando diventa:
_

_
B(u
0
u)
0,1
= 1 (1 u) + (1 u
0
) u
B(u
0
u)
1,1
= 0 + u
0
u
=
_

_
B(u
0
u)
0,1
= (1 u
0
u)
B(u
0
u)
1,1
= u
0
u
3.2. PROPRIET DELLE CURVE DI BZIER 57
Caso n + 1
B(u
0
u)
i,n+1
=
n+1

j=0
B(u
0
)
i,j
B(u)
j,n+1
=
n

j=0
B(u
0
)
i,j
B(u)
j,n+1
+B(u
0
)
i,n+1
B(u)
n+1,n+1
Sfruttando la possibilit di esprimere i polinomi di Bernstein in forma
ricorsiva possibile scrivere:
B(u
0
u)
i,n+1
= (1 u)
n

j=0
B(u
0
)
i,j
B(u)
j,n
+u
n

j=0
B(u
0
)
i,j
B(u)
j1,n
+B(u
0
)
i,n+1
B(u)
n+1,n+1
Sempre sfruttando le propriet dei polinomi di Bernstein possibile cam-
biare gli indici della sommatoria, inoltre esprimendo lultimo termine attra-
verso la formulazione ricorsiva possibile notare che:
B(u)
n+1,n+1
= (1 u) B(u)
n+1,n
+ uB(u)
n,n
B(u)
n+1,n+1
= uB(u)
n,n
Quindi si ricava che:
B(u
0
u)
i,n+1
= (1 u)
n

j=0
B(u
0
)
i,j
B(u)
j,n
+ u
n

j=1
B(u
0
)
i,j
B(u)
j1,n
+B(u
0
)
i,n+1
B(u)
n,n
= (1 u)
n

j=0
B(u
0
)
i,j
B(u)
j,n
+ u
n1

j=0
B(u
0
)
i,j+1
B(u)
j,n
+B(u
0
)
i,n+1
B(u)
n,n
= (1 u)
n

j=0
B(u
0
)
i,j
B(u)
j,n
+ u
n

j=0
B(u
0
)
i,j+1
B(u)
j,n
58 CAPITOLO 3. LA CURVE DI BZIER
Sostituendo ancora una volta con la formulazione ricorsiva dei polinomi
possibile ottenere:
= (1 u)
n

j=0
B(u
0
)
i,j
B(u)
j,n
+ u
n

j=0
_
(1 u
0
) B(u
0
)
i,j
+ u
0
B(u
0
)
i1,j
_
B(u)
j,n
= (1 u)
n

j=0
B(u
0
)
i,j
B(u)
j,n
+ uu
0
n

j=0
B(u
0
)
i1,j
B(u)
j,n
+ u (1 u
0
)
n

j=0
B(u
0
)
i,j
B(u)
j,n
= (1 u + u uu
0
)
n

j=0
B(u
0
)
i,j
B(u)
j,n
+ uu
0
n

j=0
B(u
0
)
i1,j
B(u)
j,n
= (1 uu
0
)
n

j=0
B(u
0
)
i,j
B(u)
j,n
+ uu
0
n

j=0
B(u
0
)
i1,j
B(u)
j,n
Che per lipotesi induttiva su n pu anche essere scritto come:
B(u
0
u)
i,n+1
= (1 uu
0
) B(u
0
u)
i,n
+ u
0
uB(u
0
u)
i1,n
Questultima sicuramente vera ricordando ancora una volta la relazione
ricorsiva.
Ora sfruttando i due lemmi appena dimostrati, possibile descrivere come
sia possibile suddividere una curva di Bzier in due curve la cui unione sia
esattamente la curva di partenza.
Quello che si vuole dimostrare quindi che:
n

j=0
B(u)
j,n
w
0
j
=
_
n

j=0
B(u)
j,n
w
j
0

n

j=0
B(u)
j,n
w
nj
j
_
Ovvero ssato un u
0
[0, 1] esistono due curve, che potremmo chiama-
re destra e sinistra (che sono ancora curve di Bzier), lunione delle quali
corrisponde esattamente alla curva originale.
Tali due curve possono essere espresse nel seguente modo:
3.3. PAUL DE CASTELJAU 59
_

_
P
sinistra
(u
0
u) =

n
i=0
B(u
0
u)
i,n
w
i
P
destra
(1 u
0
u) =

n
i=0
B(1 u
0
u)
ni,n
w
ni
u [0, 1]
Per quanto riguarda la curva sinistra si pu vedere che:
P
sinistra
(u
0
u) =
n

i=0
B(u
0
u)
i,n
w
i
=
n

i=0
_
n

j=0
B(u
0
)
i,j
B(u)
j,n
_
w
i
=
n

j=0
_
n

i=0
B(u
0
)
i,j
w
i
_
B(u)
j,n
Si pu notare che nella sommatoria interna, tutti i termini si annullano
per i > j quindi si pu sostituire.
P
sinistra
(u
0
u) =
n

j=0
_
j

i=0
B(u
0
)
i,j
w
i
_
B(u)
j,n
P
sinistra
(u
0
u) =
n

j=0
B(u)
j,n
w
j
0
3.3 Paul De Casteljau
Paul de Casteljau (nato nel 1930 a Besanon, Francia), ha lavorato come
sico e matematico alla Citron, dove nel 1959 ha sviluppato un algoritmo
per il calcolo delle curva di Bzier.
Lalgoritmo di De Casteljau tuttora il metodo pi robusto e numeri-
camente stabile per la valutazione polinomi, anche se pi lento rispetto a
metodi come quello di Horner.
60 CAPITOLO 3. LA CURVE DI BZIER
3.4 Algoritmo di DeCasteljau
Concettualmente lalgoritmo di basa sullapplicazione ricorsiva della proprie-
t per cui un polinomio di Benrstein di grado n pu essere rappresentato in
funzione di una combinazione lineare di polinomi di Benrstein di grado n1.
Si pu dimostrare che tale processo ricorsivo applicato ad u ssato porta
alla valutazione della curva di Bzier nel punto.
Una generica curva di Bzier pu essere espressa nel seguente modo:
P (u) =
n

i=0
B(u)
i,n
w
i
che sfruttando la denizione ricorsiva dei polinomi diventa:
P (u) =
n

i=0
_
(1 u) B(u)
i,n1
+ uB(u)
i1,n1
_
w
i
Giocando con gli indici delle basi questa formulazione pu essere ulterior-
mente rielaborata nella maniera seguente:
P (u) =
n

i=0
(1 u) B(u)
i,n1
w
i
+
n

i=0
uB(u)
i1,n1
w
i
P (u) =
n1

i=0
(1 u) B(u)
i,n1
w
i
+
n

i=1
uB(u)
i1,n1
w
i
P (u) =
n1

i=0
(1 u) B(u)
i,n1
w
i
+
n1

i=0
uB(u)
i,n1
w
i+1
P (u) =
n1

i=0
B(u)
i,n1
((1 u) w
i
+ uw
i+1
)
Come si vede dalla denizione ricorsiva, una curva di Bzier di grado n
valutata in un punto ha lo stesso valore di una curva di Bzier di grado n1
valutata nello stesso punto ma con dei pesi modicati. La forma appena
presentata compare per ogni base, quindi si pu pensare di generalizzare la
notazione ed introdurre la seguente denizione ricorsiva per i pesi.
3.5. CURVE DI BZIER RAZIONALI 61
W
j
i
=
_
(1 u) W
j1
i
+ uW
j1
i+1
_
A questo punto si pu sostituire nella e quello che si ottiene :
P (u) =
nj

i=0
B(u)
i,nj
W
j
i
Valutando la formula appena ricavata per j = n si ottiene
P (u) =
nn

i=0
B(u)
i,nn
W
n
i
P (u) =
0

i=0
B(u)
i,0
W
n
i
P (u) = W
n
i
Che la dimostrazione che i pesi calcolati al passo nesimo dellalgoritmo
ricorsivo corrispondono con il valore della funzione.
Quindi in denitiva lapplicazione dellalgoritmo di DeCasteljau si ridu-
ce al solito schema triangolare di riduzione, che attraverso una catena di
interpolazioni lineari converge in n passi alla soluzione cercata.
in gura 3.4 possibile vedere un codice FORTRAN che applica questo
algoritmo.
3.5 Curve di Bzier razionali
Bench i polinomi orano molti vantaggi, esistono un considerevole numero
di curve superci che non possono essere rappresentate in maniera esatta me-
diante dei polinomi. Queste curve sono circonferenze, ellissi, iperboli, sfere,
ellissoidi iperboloidi. . . . (??sarei stato tentato di dire coniche e quadriche ma
parabola e le rette degeneri???)
62 CAPITOLO 3. LA CURVE DI BZIER
Figura 3.2: Schema di funzionamento dellalgoritmo di DeCasteljau
Figura 3.3: Schema di funzionamento dellalgoritmo di DeCasteljau per una
gura chiusa
3.5. CURVE DI BZIER RAZIONALI 63
SUBROUTINE DeCasteljau( P, u, X )
REAL(KIND=8), DIMENSION(:), INTENT(IN) :: P
REAL(KIND=8) , INTENT(IN) :: u
REAL(KIND=8) , INTENT(OUT) :: X
REAL(KIND=8), DIMENSION(SIZE(P) ) :: Q
INTEGER :: i, j, n
n = SIZE(P,2)
Q = P
DO i = 1, n-1
DO j = 1, n-i
Q(j) = (1-u)*Q(j) + u*Q(j+1)
END DO
END DO
X = Q(1)
END SUBROUTINE DeCasteljau
Figura 3.4: Script FORTRAN per la valutazione di una curva di Bzier
attraverso lalgoritmo di DeCastejau
64 CAPITOLO 3. LA CURVE DI BZIER
Come esempio di ci pu subito vedere che il cerchio di raggio unitario
non pu essere rappresentato mediante uno sviluppo polinomiale.
_

_
x
2
+ y
2
= 1
x = x(u) =

n
i=0
a
i
u
i
y = y(u) =

n
i=0
b
i
u
i
Sostituendo nellequazione si ottiene la seguente formulazione:
_
n

i=0
a
i
u
i
_
2
+
_
n

i=0
b
i
u
i
_
2
= 1
Che sviluppando i termini equivale a scrivere che:
n

i=0
_
i

j=0
_
a
i
a
j
u
i+j
+ b
i
b
j
u
i+j
_
_
= 1
Per poter trovare i valori dei coecienti che soddisfano lequazione devo
raccogliere i vari coecienti in modo da mettere in luce le varie potenze di
u, e poi azzerare tutti i coecienti in modo che lequazione sia soddisfatta
sempre.
Un modo intuitivo per vedere come vengono raccolti i coecienti quello
di costruire la matrice che li contiene, e vedere che i coecienti di pari ordine
(in u ) stanno sulle anti diagonali.
Infatti per questo motivo il quadrato di un polinomio pu anche essere
scritto nella seguente forma:
2n

i=0
_
_
min(i,n)

j=max(0,in)
a
j
a
ij
+ b
j
b
ij
_
_
u
i
= 1
Con le funzioni min e max che sono denite nel seguente modo:
3.5. CURVE DI BZIER RAZIONALI 65
_
_
_
max (i, j) = max (i, j) i = j
max (i, j) = i|j i = j
_
_
_
min (i, j) = min (i, j) i = j
min (i, j) = i|j i = j
Cercando adesso di annullare i coecienti di tale polinomio, si pu par-
tire dallelemento di grado pi elevato, ovvero quello di grado 2n; per tale
elemento si potr scrive lequazione a
2
n
+ b
2
n
= 0 come si pu vedere nella
matrice qui di seguito a
n
lunico elemento della sua anti diagonale.
_

_
a
2
0
2a
1
a
0
a
2
1
2a
2
a
0
2a
2
a
1
a
2
2
.
.
.
.
.
.
.
.
.
2a
n1
a
0
2a
n1
a
1
a
2
n1
2a
n
a
1
2a
n
a2 2a
n
a
n1
a
2
n
_

_
Lunica soluzione per tale equazione quella per cui sia a
n
che b
n
so-
no nulli, il che azzera anche tutti i coecienti sullultima riga e sullultima
colonna.
66 CAPITOLO 3. LA CURVE DI BZIER
_

_
a
2
0
2a
1
a
0
a
2
1
2a
2
a
0
2a
2
a
1
a
2
2
.
.
.
.
.
.
.
.
.
2a
n1
a
0
2a
n1
a
1
a
2
n1
0 0 0 0
_

_
A questo punto itero la procedura, iterazione dopo iterazione ci si trova
sempre di fronte ad equazioni del tipo a
2
i
+ b
2
i
= 0 la cui soluzione azzera
lintera riga della matrice
_

_
a
2
0
0 0
.
.
.
.
.
.
.
.
.
0 0
_

_
La procedura iterativa nisce quando si arriva ai termini di ordine 0, per
i quali rimane lequazione:
a
2
0
+ b
2
0
= 1
da cui si ricava che:
_

_
x(u) = a
0
y (u) = b
0
Non quindi possibile utilizzare un polinomio per descrivere circonferen-
ze, ellissi,. . . .
3.5. CURVE DI BZIER RAZIONALI 67
E per noto n dai matematici classici che tutte le coniche possono essere
rappresentate attraverso delle funzioni razionali le quali sono denite come
il rapporto fra polinomi.
In eetti le coniche possono essere rappresentate con funzioni razionali
del tipo:
x(u) =
X (u)
W (u)
y (u) =
Y (u)
W (u)
Si noti che X (u) , Y (u) , W (u) sono polinomi e che le due coordinate
hanno lo stesso denominatore.
Eintuitivo vedere che in questo modo possibile rappresentare le coniche,
infatti tornando allesempio del cerchio unitario fatto in precedenza.
Lequazione parametrica pu essere scritta in nel seguente modo:
X (u)
W (u)
+
Y (u)
W (u)
= 1
La quale, portando a destra il denominatore comune, diventa:
X (u) + Y (u) = W (u)
Procedendo allo stesso modo di prima si vede che ora lequazione da
risolvere per il termine di ordine 2n diventa:
a
2
n
+ b
2
n
= w
2
n
Quindi i termini non si annullano e questo signica che esiste una para-
metrizzazione possibile per le coniche e quadriche che sfrutti delle basi date
dal rapporto fra polinomi.
Lunica pecca, che in questo caso ci si ritrova con 3 (n + 1) incognite e
2 (n + 1) equazioni, infatti le curve razionali non hanno una rappresentazione
univoca.
68 CAPITOLO 3. LA CURVE DI BZIER
3.5.1 Le basi di Bernstein razionali
Un modo intelligente per sfruttare questa arbitrariet quello di denire i
punti in coordinate omogenee, denire cio dei punti in uno spazio nd + 1
dimensionale, in cui la coordinata aggiuntiva rappresenta il parametro libe-
ro, in questo modo indipendentemente dalla scelta dei pesi arbitrari i punti
apparterranno comunque ad una stessa classe di equivalenza.
E possibile denire le basi di Bernstein razionali nel seguente modo:
R
i,n
=
B
i,n
(u) s
i

n
j=0
B
j,n
(u) s
j
0 u 1, s
i
> 0
Utilizzando questa come base, possibile riscrivere una generica curva
nel seguente modo:
P (u) =
n

i=0
R
i,n
w
i
La scelta di utilizzare le coordinate omogenee e di sfruttare i pesi come pa-
rametri aggiuntivi che deniscono la forma del poligono di controllo e quindi
della curva stessa nello spazio proiettivo molto vantaggiosa soprattutto per
il fatto che quando si deve andare a valutare una curva razionale di Bzier in
un punto, si possono riutilizzare come si vedr nel prossimo paragrafo tutti
gli algoritmi e i codici sviluppati per il caso non razionale.
Le basi di Bzier razionali hanno le seguenti propriet (che non verranno
dimostrate):
Non negativit
Partizione dellunit
R
0,n
(0) = R
n,n
(1) = 1
Presentano un solo massimo nellintervallo [0, 1]
Coincidono con la base di Bernstein canonica nel caso di s
i
= 1i
Mentre le curve di Bzier razionali presentano le seguenti propriet
3.5. CURVE DI BZIER RAZIONALI 69
Le curve sono contenute nellinviluppo convesso del loro poligono di
controllo
Sono invarianti rispetto a trasformazioni ani e proiettive
Interpolazione dei punti estremi
Tangenza della curva al poligono di controllo nei punti estremi
Variazione di segno
3.5.2 Algoritmo di DeCasteljau per curve Razionali
Per quanto riguarda la costruzione del metodo non cambia niente rispetto
allalgoritmo classico, i passi da seguire per la valutazione di una curva di
Bzier razionale sono:
Calcolo del poligono di controllo necessario
Calcolo dei pesi
Calcolo dei punti di controllo pesati (proiettati)
Utilizzare lalgoritmo standard di DeCasteljau per valutare la curva
nello spazio proiettivo
Riproiettare la curva nello spazio originale
Per meglio spiegare la procedura di calcolo, viene preso in esame il caso
in cui si voglia rappresentare un arco di cerchio unitario posto nel primo
quadrante.
Nei seguente paragra viene presentata una procedura intuitiva per il
calcolo dei pesi di una Curva di Bzier razionale, data unequazione scritta
in forma polinomiale; per la procedura matematicamente rigorosa si possono
consultare i vari esempi presenti nella sezione 3.7.
70 CAPITOLO 3. LA CURVE DI BZIER
Calcolo del poligono di controllo Una rappresentazione attraverso una
base polinomiale razionale polinomiale di un arco di cerchio unitario centrato
nellorigine e collocato nel primo quadrante del piano cartesiano pu essere
la seguente: (pu essere perch non univoca la scelta dei polinomi)
x(u)
2
+ y (u)
2
= w(u)
_

_
x(u) = 1 u
2
y (u) = 2u
w(u) = 1 + u
2
Per capire come devono essere fatti i pesi delle curve di Bzier che rap-
presentano le varie coordinate, bisogna capire quale deve essere la forma del
poligono di controllo.
Per prima cosa dato che il grado dei polinomi 2, saranno necessari 3
punti di controllo per ogni coordinata.
Inoltre facile vedere che:
1. Per la propriet di interpolazione agli estremi, il poligono di controllo
dovr passare per i punti P
0
= (1, 0) e P
2
= (0, 1)
2. Per la tangenza del poligono di controllo agli estremi il punto mancante
dovr essere per forza P
1
= (1, 1)
Quindi i punti di controllo cercati sono:
_

_
P
x
= (110)
P
y
= (011)
In gura 3.5.2 possibile vedere il poligono di controllo necessario per
disegnare un arco di cerchio di raggio unitario nel primo quadrante.
Calcolo dei pesi Per il calcolo dei pesi invece non possibile procedere
pcon semplici considerazioni sulla forma che dovr avere la curva, si dovranno
svolgere i esplicitamente i calcoli; come visto nel paragrafo 2.6, ci pu essere
3.5. CURVE DI BZIER RAZIONALI 71
Figura 3.5: Poligono di controllo
fatto in maniera automatica calcolando le matrici della base oppure basta
sviluppare i calcoli data la semplicit del caso in esame:
w(u) = 1 + u
2
=
2

i=0
B
i,2
s
i
w(u) = (1 u)
2
s
0
+ 2u (1 u) s
1
+ u
2
s
2
w(u) =
_
1 2u + u
2
_
s
0
+
_
2u 2u
2
_
s
1
+ u
2
s
2
Da questa equazione si vede che una possibile soluzione : s
i
= (1, 1, 2),
infatti sostituendo si ottiene:
w(u) = 1 2u + u
2
+ 2u 2u
2
+ u
2
s
2
w(u) = 1 + u
2
72 CAPITOLO 3. LA CURVE DI BZIER
Figura 3.6: Poligono di controllo proiettato
Calcolo dei punti di controllo pesati Poich si sta lavorando in coordi-
nate omogenee, i punti possono essere proiettati in uno spazio n + 1 dimen-
sionale, nel seguente modo:
(P
x1
, P
x2
, . . . , 1) (sP
x1
, sP
x2
, . . . , s)
Quindi ci che si deve fare moltiplicare le coordinate dei vertici del
poligono di controllo per i pesi di ogni singolo vertice.
Nella pratica tale trasformazione si pu vedere in gura 3.5.2
Calcolo della curva nello spazio proiettivo A questo punto il problema
di valutare una curva di Bzier razionale in uno spazio n-dimensionale si
trasformato nella valutazione di una curva di Bzier classica in uno spazio
n + 1 dimensionale; tale problema pu quindi essere risolto con lalgoritmo
classico di DeCasteljau, e porta ad ottenere la curva in gura 3.5.2.
Riproiettare la curva nello spazio di origine Ci si trova ora nella
situazione di avere una curva rappresentata da un vettore di punti costruiti
3.6. INTERPOLAZIONE E APPROSSIMAZIONE 73
Figura 3.7: Cuva di Bzier classica calcolata nello spazio proiettivo
nel seguente modo:
_
C
s
x1
, C
s
x2
, . . . , C
x(n+1)
_
(C
x1
, C
x2
, . . . , 1)
Quindi basta dividere le prime n coordinate di ogni singolo punto della
curva per il loro peso ( il valore della coordinata n + 1-esima). Ci molto
intuitivo se si pensa ad una curva in 2D, come larco di cerchio che si sta
calcolando, infatti quello che succede che ci si trova con una curva in 3D
e la si vuole proiettare sul piano con coordinata Z pari ad 1, come si pu
vedere in gura 3.5.2.
Nella sezione 3.7 sono presentati i procedimenti equivalenti per i calcolo
di ellissi ed iperboli.
3.6 Interpolazione e approssimazione
Approssimazione ed interpolazione matematicamente sono luno lestensio-
ne dellaltro, nel senso che lapprossimazione non altro che la soluzione
74 CAPITOLO 3. LA CURVE DI BZIER
Figura 3.8: Curva di Bzier razionale riproiettata nello spazio originario
che minimizza una qualche misura di un problema di interpolazione sovra
determinato.
Per quanto riguarda il problema classico (non razionale), la soluzione
particolarmente facile, mentre per quanto riguarda il problema razionale
(che non trattato) il problema pi complicato, e bisogna procedere per
via diversa utilizzando i moltiplicatori di Lagrange
Una curva di Bzier pu essere espressa facilmente con notazione matri-
ciale, nel seguente modo:
C
i
(u) = B (u) P
i
Con i che rappresenta lindice che cicla sul numero di dimensioni del
problema, e la matrice B (u), che rappresenta le basi di Bernstein valutate
(riga per riga) a parametro u ssato, ovvero:
3.6. INTERPOLAZIONE E APPROSSIMAZIONE 75
B (u) =
_

_
B
1,n
(u
1
) B
2,n
(u
1
) B
n,n
(u
1
)
B
1,n
(u
2
) B
2,n
(u
2
) B
n,n
(u
2
)
.
.
.
.
.
.
.
.
.
.
.
.
B
1,n
(u
m
) B
2,n
(u
m
) B
n,n
(u
m
)
_

_
Tale matrice pu essere valutata partendo dalla base polinomiale, come
visto nella sezione ??. Tale metodo potrebbe sembrare a prima vista molto
comodo, infatti la matrice viene generata nel seguente modo:
B (u) = UT
In cui T la matrice di conversione di base, mentre U, rappresenta la
matrice contenente le potenze dei parametri u, ovvero:
U (u) =
_

_
1 u
1
u
2
1
u
n
1
1 u
2
u
2
2
u
n
2
.
.
.
.
.
.
.
.
.
.
.
.
1 u
m
u
2
m
u
n
m
_

_
Tuttavia la matrice U, molto mal condizionate, e la cosa peggiora di
molto man mano che il numero di vertici del poligono di controllo aumenta,
tanto che questo metodo risulta inutilizzabile gi per n 10. Quindi risulta
molto pi stabile dal punto di vista numerico, per questo motivo consiglia-
bile costruire direttamente la matrice B (u) termine per termine attraverso
un metodo ricorsivo come quelli presentati nei capitoli precedenti.
76 CAPITOLO 3. LA CURVE DI BZIER
3.6.1 Interpolazione
Per quanto riguarda linterpolazione, lo scopo trovare quel poligono di con-
trollo che interpola esattamente una serie di punti dati, questo signica che
se si hanno n punti, allora il poligono di controllo avr n vertici.
Questo risulta svantaggioso per la successiva manipolazione della curva,
sia in maniera interattiva, come allinterno di un qualche programma CAD,
sia in maniera automatizzata, come potrebbe essere un eventuale algoritmo
di ottimizzazione di forma, il quale si troverebbe a lavorare su tanti parametri
quanti sono i punti da interpolare moltiplicati per il numero di dimensioni
del problema.
Quindi dal punto di vista matematico linterpolazione impone il vincolo
n = m, e si pu essere vista nel seguente modo:
C
i
n
(u
n
) = B (u
n
) X
n
i
X
n
i
= B
n,n
(u
n
)
1
C
i
n
(u
n
)
In cui con lapice n si intende la dimensione del problema.
3.6.2 Approssimazione
Il problema dellapprossimazione, pu essere formulato nel seguente modo:
Data una serie di di m punti, e di p vincoli, trovare la curva di Bzier di
grado n, con n < m che meglio approssima i punti rispettando i vincoli.
Tale problema rigorosamente andrebbe arontato denendo una funzione
che stabilisce la distanza della curva approssimante dai punti da approssima-
re, e poi trovare il minimo di tale funzione vincolata tramite i moltiplicatori
di Lagrange alla Base scelta per rappresentare la curva.
Quando per la curva non razionale, si pu procedere anche risolvendo il
3.6. INTERPOLAZIONE E APPROSSIMAZIONE 77
sistema sovra determinato ai minimi quadrati utilizzando la matrice pseudo-
inversa.
Tale modo di procedere ovviamente meno generale ha meno potenzialit
dellaltro.
Matematicamente si pu procedere nel seguente modo:
_

_
X
n
i
= B
n,n
(u
n
)
1
C
i
n
(u
n
)
X
k,i
= V
k
Dove la seconda equazione esprime i vincoli da rispettare, ad esempio nel
caso in cui si voglia approssimare un prolo come in gura ??, si vorrebbe
imporre il vincolo che la curva generata sia chiusa, il che corrisponde con
limporre la posizione del primo e dellultimo punto del poligono di controllo,
ovvero imporre la posizione del bordo di uscita.
Quella di imporre i vincoli, soprattutto nel caso di un prolo una neces-
sit infatti, come si pu vedere in gura ?? il risultato sarebbe inaccettabile
se non si imponesse la posizione del bordo di uscita.
Matematicamente si pu procedere nel seguente modo:
Denisco una matrice di assemblaggio che riordina il problema spo-
stando i punti di controllo vincolati in fondo al vettore, tale matrice sar
semplicemente un permutazione delle righe o delle colonne di una matrice
diagonale, inoltre sar sicuramente una matrice ortogonale, in quanto il pro-
dotto scalare di una riga/colonna per tutte le altre dar sempre 0, mentre il
prodotto scalare di una riga/colonna per se stessa dar sempre 1.
A questo punto posso riscrivere il problema nella seguente forma:
B (u)
T
C
i
(u) = B (u)
T
B (u)
T
X
i
Rinomiando i termini e sviluppando i prodotti posso scrivere:
_
Q
L
Q
V
_
=
_

B
L,L

B
L,V

B
V,L

B
V,V
_

_
_
X
L
X
V
_
con
_

_
Q = B (u)
T
C
i
(u)

B = B (u)
T
B (u)
T
78 CAPITOLO 3. LA CURVE DI BZIER
Figura 3.9: Prolo a18 approssimato ai minimi quadrati mediante una curva
di Bzier senza limposizione del vincolo sul bordo di uscita
Con i pedici L e V che stanno per libero e vincolato. A questo punto,
visto che X
V
imposto posso riscrivere il problema come:
Q
L
=

B
L,L
X
L
+

B
L,V
X
V
Q
L


B
L,V
X
V
=

B
L,L
X
L
X
L
=

B
L,L
1
_
Q
L


B
L,V
X
V
_
Da questultima equazione quindi possibile ricavare le coordinate del
poligono di controllo.
Ripeto che questa non una procedura generica, non contempla la pos-
sibilit di minimizzare curve razionali, se non imponendo a priori i pesi, e
non ore la possibilit di pesare le distanze da minimizzare rispetto ai sin-
3.7. ESEMPI 79
Figura 3.10: Particolare del bordo di uscita di un prolo a18 approssimato ai
minimi quadrati mediante una curva di Bzier senza limposizione del vincolo
sul bordo di uscita
goli punti; semplicemente funziona, abbastanza bene, per il caso 2D, molto
semplice dellapprossimazione di un prolo alare.
3.7 Esempi
3.7.1 Calcolo dei poligoni di controllo
Le coordinate parametriche di unelisse/iperbole in forma di rapporto fra
polinomi possono essere scritta nel seguente modo:
_

_
x(u) =
1 u
2
1 + u
2
y (u) =
4u
1 + u
2
_

_
x(u) =
1 + 2u
1 + 2u 2u
2
y (u) =
4u (1 u)
1 + 2u 2u
2
80 CAPITOLO 3. LA CURVE DI BZIER
Figura 3.11: Prolo 0015 approssimato ai minimi quadrati mediante una
curva di Bzier senza limposizione del vincolo sul bordo di uscita
Quindi si dovranno convertire in forma di Bzier i tre polinomi, che
compaiono nellespressione appena scritta.
Questa operazione immediata utilizzando le matrici di conversione di
base presentate nella 2.6.
I polinomi in questione possono essere visti come polinomi di secondo
grado i cui coecienti possono essere raccolti nella seguente matrice.
_
_
_
_
1 0 1
0 4 0
1 0 1
_
_
_
_
_
_
_
_
1 0 1
2 4 2
0 4 2
_
_
_
_
Inoltre la matrice di conversione di base denita in 2.6 per il caso parti-
colare di n = 2 diventa
T
1
=
_
_
_
_
1 0 0
1
1
2
0
1 1 1
_
_
_
_
3.7. ESEMPI 81
Figura 3.12: Particolare del bordo di uscita di un prolo 0015 approssimato ai
minimi quadrati mediante una curva di Bzier senza limposizione del vincolo
sul bordo di uscita
A questo punto basta eettuare il prodotto T
1
A e si ottengono i poligoni
di controllo ed i pesi da utilizzare.
82 CAPITOLO 3. LA CURVE DI BZIER
Figura 3.13: Prolo a18 approssimato ai minimi quadrati mediante una curva
di Bzier con limposizione del vincolo sul bordo di uscita
3.7. ESEMPI 83
Figura 3.14: Particolare del bordo di uscita di un prolo a18 approssimato ai
minimi quadrati mediante una curva di Bzier con limposizione del vincolo
sul bordo di uscita
84 CAPITOLO 3. LA CURVE DI BZIER
Figura 3.15: Prolo NACA 0015 approssimato ai minimi quadrati mediante
una curva di Bzier senza limposizione del vincolo sul bordo di uscita
3.7. ESEMPI 85
Figura 3.16: Particolare del bordo di uscita di un prolo NACA 0015 appros-
simato ai minimi quadrati mediante una curva di Bzier con limposizione
del vincolo sul bordo di uscita
86 CAPITOLO 3. LA CURVE DI BZIER
Figura 3.17: Procedura di costruzione di unellisse attraverso una di Bzier
razionale
Figura 3.18: Procedura di costruzione di uniperbole attraverso una di Bzier
razionale
3.7. ESEMPI 87
Figura 3.19: Procedura di costruzione di una generica curva di Bzier
razionale
Figura 3.20: Esempio di curva con poligono autointersecante
88 CAPITOLO 3. LA CURVE DI BZIER
Figura 3.21: Esempio di curva con poligono autointersecante
Figura 3.22: Esempio di curva con poligono autointersecante
3.7. ESEMPI 89
Figura 3.23: Esempio di una gura chiusa in continuit di tangenza
Figura 3.24: Esempio di una gura chiusa con discontinuit di tangenza
CAPITOLO 4
Superci di Bzier
Dubitare di tutto o credere a
tutto, sono due soluzioni
ugualmente comode che ci
dispesano entrambe dal
riettere.
Jules Henri Poincar
Una supercie parametrica, una funzione vettoriale di 2 parametri (u, v),
e rappresenta la mappa di una regione R del piano uv nello spazio Euclideo
tridimensionale.
S (u, v) = (x(u, v) , y (u, v) , z (u, v)) con (u, v) R
Ci sono molti schemi per descrivere delle superci parametriche, che pos-
sono dierire per quanto riguarda la scelta delle funzioni che descrivono le
coordinate o per il tipo di regione R in cui sono mappate le coordinate.
Il metodo pi semplice e pi diusa quello delle Tensor Product Surfa-
ces. Tale metodo caratterizzato dalla presenza di funzioni di base bivariate
costruite come prodotto di funzioni di base univariate, e da coecienti geo-
91
92 CAPITOLO 4. SUPERFICI DI BZIER
metrici (pesi o punti di controllo), i quali sono organizzati in una matrice
(n + 1) X (m + 1) che viene detta rete di controllo o poliedro di controllo;
Inoltre sono detti punti di controllo estremi i 4 punti ai vertici della
supercie, ovvero: (S (0, 0) , S (1, 0) , S (0, 1) , S (1, 1)).
Quindi una generica supercie parametrica le cui basi sono ottenute come
prodotto di basi univariate, pu essere scritta nel seguente modo:
S (u, v) =
n

i=0
m

j=0
f
i
(u) g
j
(v) b
i,j
_

_
b
i,j
= (x
i,j
, y
i,j
, z
i,j
)
0 u, v 1
E possibile inoltre utilizzare un formalismo matriciale per semplicare la
notazione, basta notare che f
i
(u) un vettore di n+1 funzioni di base e che
g
j
(v) a sua volta un vettore di m + 1 funzioni di base.
S (u, v) = f (u)
T
b
i,j
g (v)
Come per il caso delle curve anche in questo caso per molto pi accurato
un metodo basato sulla ricorsione per il calcolo di una punto, piuttosto di
uno basato sul calcolo matriciale.
4.1 Denizione di Tensor Product Bzier Sur-
face
Le superci di Bzier sono uno strumento molto potente per la progettazione
di superci, quindi ampiamente utilizzate nella computer graphics assieme
alle curve di Bzier.
Una supercie di Bzier classica, costruita prendendo un generico po-
ligono di controllo formato da una griglia 2D strutturata di punti, e dal
prodotto delle basi di Benrstein monovariate, ed ha la seguente forma.
4.2. PROPRIET 93
S (u, v) =
n

i=0
m

j=0
B
i,n
(u) B
j,m
(v) P
i,j
_

_
P
i,j
= (x
i,j
, y
i,j
, z
i,j
)
0 u, v 1
Che in forma matriciale diventa:
S (u, v) = B
n
(u)
T
P
i,j
B
m
(v)
4.2 Propriet
Le superci di Bzier godono di alcune propriet che derivano da quelle dei
polinomi di Bernstein usati per costruire le superci stesse e dalle propriet
delle curve di Bzier, in quanto le superci non sono altro che unestensione
delle curve di Bzier.
Derivazione
Non negativit
Partizione dellunit per ogni u, v
Inviluppo convesso
Invarianza per trasformazioni ani
Su di una supercie le curve isoparametriche sono ancora curve di
Bzier
Il bordo delle superci di Bzier dato dalle curve di Bzier descritte
dalle poligonali che formano il bordo del poliedro di controllo.
Interpolazione dei punti di controllo estremi
Poliedro di controllo tangente alla supercie nei punti di controllo
estremi
94 CAPITOLO 4. SUPERFICI DI BZIER
Suddivisione
Se triangolato il poliedro di controllo forma unapprossimazione a patch
planari della supercie
Come curiosit si pu aggiungere che le superci di Bzier, dierentemen-
te dalle curve di Bzier, non godono della propriet di variation diminishing.
4.2.1 Non negativit
Il prodotto B
i,n
(u) B
j,m
(v) non negativo per ogni i, n, j, m e per ogni u, v
[0, 1], in quanto prodotto di quantit positive.
4.2.2 Partizione dellunit
Il prodotto di due quantit unitarie unitario.
n

i=0
m

j=0
B
i,n
(u) B
j,m
(v) =
n

i=0
B
i,n
(u)
m

j=0
B
j,m
(v) = 1
_

_
0 i n
0 j m
u, v [0, 1]
4.2.3 Inviluppo convesso
Come le curve di Bzier, le superci di Bzier possiedono la propriet di invi-
luppo convesso, cio ogni punto della supercie contenuto entro il poliedro
convesso denito dai punti di controllo. Questo deriva dal fatto che S (u, v)
una combinazione lineare di tutti i suoi punti di controllo e che gode della
propriet di partizione dellunit.
4.2.4 Invarianza per trasformazioni ani
Come per il caso 2D possibile scrivere una generica trasformazione ane
nel seguente modo:
S
p
= R
p,q
s
q
+ b
p
4.2. PROPRIET 95
Si immagini di avere una generica 2-variet in uno spazio Nddimensionale,
parametrizzata secondo Bzier, allora le sue coordinate potranno essere scrit-
te come:
s (u, v) =
_
_
_
_
_
_
_

n
i=0

m
j=0
B
i,n
(u) B
j,m
(v) w
1,i,j

n
i=0

m
j=0
B
i,n
(u) B
j,m
(v) w
2,i,j
.
.
.

n
i=0

m
j=0
B
i,n
(u) B
j,m
(v) w
Nd,i,j
_
_
_
_
_
_
_
La trasformazione si pu quindi riscrivere nel seguente modo,tenendo con-
to del fatto che le basi di Bernstein bivariate godono della propriet di essere
partizioni dellunit.
S
p
(u, v) =
Nd

q=1
_
R
p,q
n

i=0
m

j=0
B
i,n
(u) B
j,m
(v) w
q,i,j
_
+b
p
n

i=0
m

j=0
B
i,n
(u) B
j,m
(v)
Che raccogliendo e cambiando di ordine le sommatorie pu essere riscritta
come:
S (u, v)
p
=
n

i=0
m

j=0
B
i,n
(u) B
j,m
(v)
_
Nd

q=1
(R
p,q
w
q,i,j
+ b
p
)
_
Che la dimostrazione che la supercie trasformata equivale alla super-
cie costruita sul poliedro di controllo trasformato.
4.2.5 Curve isoparametriche di Bzier
Fissato S
0
S (u
0
, v
0
), si ha che le due curve coordinate S (u, v
0
) e S (u
0
, v)
sono ancora curve di Bzier.
Per dimostrarlo basta introdurre le seguenti denizioni:
_

_
Q
j
(u) =

n
i=0
B
i,n
(u) P
i,j
Q
i
(v) =

m
j=0
B
j,m
(v) P
i,j
96 CAPITOLO 4. SUPERFICI DI BZIER
A questo punto si pu sostituire nellespressione della generica supercie:
_

_
S (u
0
, v) =

m
j=0
Q
j
(u
0
) B
j,m
(v)
S (u, v
0
) =

n
i=0
B
i,n
(u) Q
i
(v
0
)
Le quali sono due curve di Bzier rispettivamente con pesi Q
j
(u
0
) e Q
i
(v
0
)
4.2.6 Bordo composto di curve di Bzier
Il bordo delle superci di Bzier dato dalle curve di Bzier descritte dalle
poligonali che formano il bordo del poliedro di controllo. Invece le curve di
Bzier generate dalle poligonali interne al poliedro di controllo di solito non
vivono sulla supercie.
Quindi si pu dire che:
S (u, 0) e S (u, 1) sono curve di Bzier di grado n con punti di controllo
rispettivamente P
i,0
e P
i,1
S (0, v) e S (1, v) sono curve di Bzier di grado m con punti di controllo
rispettivamente P
0,j
e P
1,j
Quindi il problema :
_
_
_
S (0, v) =

n
i=0

m
j=0
B
i,n
(0) B
j,m
(v) P
i,j
S (1, v) =

n
i=0

m
j=0
B
i,n
(1) B
j,m
(v) P
i,j
Si pu facilmente dimostrare ricordandosi le propriet dei polinomi di
Bernstein per cui:
n

i=0
B
i,n
(0) =
_
_
_
1 per i = 0
0 altrimenti
n

i=0
B
i,n
(1) =
_
_
_
1 per i = n
0 altrimenti
4.2. PROPRIET 97
Quindi possibile scrivere:
_
_
_
S (0, v) =

m
j=0
B
j,m
(v) P
0,j
S (1, v) =

m
j=0
B
j,m
(v) P
n,j
E per simmetria del problema si pu dimostrare che:
_
_
_
S (u, 0) =

n
i=0
B
i,n
(u) P
i,0
S (u, 1) =

n
i=0
B
i,n
(u) P
i,m
4.2.7 Interpolazione dei punti di controllo estremi
Come la curva di Bzier, la supercie di Bzier interpola, cio passa attra-
verso, i primi e gli ultimi punto di controllo, mentre approssima gli altri
punti.
Tale tesi pu essere dimostrata semplicemente osservando la dimostrazio-
ne della propriet 4.2.6 e ricordandosi la propriet di interpolazione dei punti
estremi di una curva di Bzier.
4.2.8 Tangenza nei punti di controllo estremi
Il piano tangente a ciascun angolo interpola i vertici dellangolo stesso ed i
due vertici degli spigoli vicini. Il piano tangente il piano perpendicolare al
vettore normale in un punto.
Anche questa propriet intuitiva ed immediata da vericare con-
siderando la 4.2.6, e dalla propriet di tangenza di una curva nei punti
estremi.
4.2.9 Derivazione
La derivata mista di una supercie di Bzier si pu ottenere semplicemente
con il prodotto delle derivate rispetto ad u e rispetto a v, visto che si possono
considerare u e v indipendenti.
Quindi la generica derivata si pu esprimere come:
98 CAPITOLO 4. SUPERFICI DI BZIER
_

_
b
r,s
i,j
=

r
k=0

s
l=0
_
n!(1)
k
(nr)!
m!(1)
l
(ms)!
_
r
k
__
s
l
_
w
i+rk,j
w
i,j+sl
_

r+s
P(u,v)
u
r
v
s
=

nr
i=0

ms
j=0
_
B(u)
i,nr
B(v)
j,ms
b
r,s
i,j
_
In gura 4.1 si pu vere una subroutine FORTRAN per il calcolo dei pesi
da utilizzare nella valutazione di una generica derivata rispetto ai parametri.
4.2.10 Suddivisione
4.3 Algoritmo di DeCasteljau per superci
Nel caso del calcolo di un punto su di una supercie, possibile grazie alla
propriet 4.2.5, suddividere il problema a due parametri in due problemi
ad un solo parametro, e sfruttare poi tutti gli algoritmi e le dimostrazioni
ricavati per il caso di un solo parametro.
Lunica considerazione aggiuntiva da fare, sulla scelta della direzione
di partenza, esistono infatti due diverse formulazioni possibili che possono
essere ricavate dalla seguente espressione:
S (u, v) =
n

i=0
m

j=0
B
i,n
(u) B
j,m
(v) P
i,j
Con semplici passaggi si pu vedere che:
_

_
S(u
0
, v) =

m
j=0
B
j,m
(v)
_
n
i=0
B
i,n
(u
0
) P
i,j
_
S(u, v
0
) =

n
i=0
B
i,n
(u)
_

m
j=0
B
j,m
(v
0
) P
i,j
_
Che pu anche essere visto come:
_

_
S (u
0
, v) =

m
j=0
B
j,m
(v)

Q
j
S (u, v
0
) =

n
i=0
B
i,n
(u)

Q
i
4.3. ALGORITMO DI DECASTELJAU PER SUPERFICI 99
SUBROUTINE WeightDerSup( P, r, s, Prs )
REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: P
INTEGER , INTENT(IN) :: r, s
REAL(KIND=8), DIMENSION(0:SIZE(P,1)-r,0:SIZE(P,2)-s)&
&, INTENT(OUT) :: Prs !
REAL(KIND=8), DIMENSION(0:r) :: QK
REAL(KIND=8), DIMENSION(0:s) :: QL
REAL(KIND=8) :: CK, CL
INTEGER :: i, j, k, l, n, m
n = SIZE(P,1)-1; m = SIZE(P,2)-1
CK = n; QK(0) = 1.
DO k = 1, r-1
CK = CK*(n-k); QK(k) = -1 * QK(k-1) * (n-k+1) / k
END DO
QK(r) = -1 * QK(r-1) * (n-r+1) / r
CL = m; QL(0) = 1.
DO l = 1, s-1
CL = CL*(m-k); QL(l) = -1 * QL(l-1) * (m-l+1) / l
END DO
QL(s) = -1 * QL(s-1) * (m-s+1) / s
DO i = 0, n-r
DO j = 0, m-s
Prs(i,j) = 0.0
DO k = 0, r
DO l = 0, s
Prs(i,j) = Prs(i,j) + QK(k)*QL(l)*P(i,j+s-l)*P(i+r-k,j)
END DO
END DO
Prs(i,j) = CK*CL*Prs(i,j)
END DO
END DO
END SUBROUTINE WeightDerSup
Figura 4.1: Script FORTRAN per il calcolo dei pesi da usare nella valutazione
delle derivate rispetto a 2 parametri
100 CAPITOLO 4. SUPERFICI DI BZIER
Con

Q
i
e

Q
j
che sono i poligoni di controllo rispettivamente delle curve
S (u, v
0
) e S (u
0
, v)
4.3.1 Direzione di partenza dellalgoritmo
Come visto in 3.4 un generico algoritmo di DeCasteljau va a convergenza
in n (con n pari al grado della curva) passi, ed il generico passo i richiede
n+1i interpolazioni. Questo signica che per calcolare un punto su di una
curva di grado n, sono necessarie
n(n+1)
/
2
interpolazioni come dimostrato da
Gauss.
Nel caso in lalgoritmo debba essere utilizzato per il calcolo di un punto
su di una supercie di ordine [nxm], come appena visto lalgoritmo consister
di due passi.
Il primo passo consiste nel calcolare il poligono controllo di una delle
coordinate curvilinee che passano per il punto del quale si vuole calcolare
la posizione (4.2.5). Questa operazione richieder un numero di operazioni
diverse in funzione della direzione lungo la quale si vuole calcolare la coordi-
nata curvilinea. Quindi, nel caso in cui si eettui il primo step dellalgoritmo
lungo la direzione v, si dovranno calcolare gli (n + 1) punti di controllo della
coordinata curvilinea, ognuno dei quali coster
m(m+1)
/
2
interpolazioni linea-
ri; nel caso opposto, invece si dovranno calcolare (m + 1) punti di controllo
ognuno dei quali coster
n(n+1)
/
2
interpolazioni lineari.
Il secondo passo invece consiste nel valutare un punto sulla curva calcolata
nel primo passo, e potr costare
n(n+1)
/
2
o
m(m+1)
/
2
interpolazioni lineari in
funzione della scelta operata precedentemente.
In sostanza il numero di operazioni necessarie al calcolo di un punto su di
una supercie di Bzier il cui poligono di controllo non sia quadrato, dipende
dallordine con cui si eettuano le operazioni.
Riassumendo i casi sono due modi per calcolare il valore della supercie
nel punto di coordinate parametriche (u
0
, v
0
)
4.4. RATIONAL TENSOR PRODUCT SURFACES 101
_

_
m(m + 1) (n + 1)
2
+
n(n + 1)
2
S (u, v) S (u, v
0
) S (u
0
, v
0
)
n(n + 1) (m + 1)
2
+
m(m + 1)
2
S (u, v) S (u
0
, v) S (u
0
, v
0
)
Per capire quale dei due sia meglio scegliere, si pu pensare di scrivere
lequazione che esprime la dierenza del numero di operazioni nei due casi,
e studiarne il segno:
f (n, m) =
m(m + 1) (n + 1)
2
+
n(n + 1)
2

n(n + 1) (m + 1)
2

m(m + 1)
2
f (n, m) =
1
2
(m(m + 1) n n(n + 1) m)
f (n, m) =
1
2
(nm(mn))
Quindi, visto che n ed m hanno sempre valori positivi, analizzando il segno
della funzione, si pu dire che per essere ecienti il calcolo andr eettuato
nel seguente modo:
_

_
S (u, v) S (u, v
0
) S (u
0
, v
0
) n > m
S (u, v) S (u
0
, v) S (u
0
, v
0
) m > n
Per il caso in cui n = m ovviamente indierente la strada che si sceglie
4.4 Rational Tensor Product Surfaces
Per quanto riguarda le superci razionali, il procedimento lo stesso che si
usato per le curve, si usa lo stesso algoritmo sviluppato per le superci
classiche, ma in n + 1 dimensioni e poi si riproietta la supercie nello spazio
n dimensionale di origine.
102 CAPITOLO 4. SUPERFICI DI BZIER
Derivata per curve razionali Per calcolare la derivata di una super-
cie razionale, basta pensare che la singola coordinate della supercie ha la
seguente forma:
S
x
(u, v) =
X(u, v)
W(u, v)
Nella sezione 4.2.9 stato dimostrato come si possa calcolare la generica
derivata mista di qualsiasi ordine delle funzioni che stanno al numeratore ed
al denominatore della frazione.
Quindi per calcolare la generica derivata di una curva razionale basta
applicare la regola di derivazione per le frazioni assieme a quella di derivazione
di funzione di funzione ed applicandole ricorsivamente si pu vedere che:

r+l
u
r
v
l
X(u, v)
W(u, v)
=
_

r+l
u
r
v
l
X(u, v)

r+l
u
r
v
l
W(u, v)
_
W(u, v)
2
(r+l)
4.4.1 Algoritmo di DeCasteljau per superci Razionali
Il procedimento per il calcolo di una supercie razionale il seguente:
Si proietta il poliedro di controllo attraverso i la matrice di pesi in modo
da ottenere un vettore di questo tipo:
_
P
x
i,j
w
i,j
, P
y
i,j
w
i,j
, P
z
i,j
w
i,j
, w
i,j
,
_
Si calcola la supercie nello spazio proiettivo:
S
w
(u, v) =
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_

n
i=0

m
j=0
B
i,n
(u) B
j,m
(v) P
x1
i,j
w
i,j

n
i=0

m
j=0
B
i,n
(u) B
j,m
(v) P
x2
i,j
w
i,j
.
.
.

n
i=0

m
j=0
B
i,n
(u) B
j,m
(v) P
xn
i,j
w
i,j

n
i=0

m
j=0
B
i,n
(u) B
j,m
(v) w
i,j
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
4.5. INTERSEZIONE DI SUPERFICI 103
Si riproietta la supercie nello spazio originario
S (u, v) =
_
_
_
_
_
_
_
_
_
_
_
_
S
W
x1
(u, v) /S
W
xn+1
(u, v)
S
W
x2
(u, v) /S
W
xn+1
(u, v)
.
.
.
S
W
xn
(u, v) /S
W
xn+1
(u, v)
_
_
_
_
_
_
_
_
_
_
_
_
Come si vede, tutto pu essere fatto riutilizzando i programmi scritti
per le superci classiche, i quali a loro volta derivavano da quelli scritti per
trattare le curve.
4.5 Intersezione di superci
E stato dimostrato come si possa calcolare la posizione di un punto su di una
supercie di Bzier, sia essa classica oppure razionale, ed anche come si possa
in tale punto conoscere le derivate delle coordinate rispetto ai parametri.
Partendo da queste premesse facile pensare ad un algoritmo che sfrut-
tando un metodo tipo Newton trovi lintersezione fra due superci, ovvia-
mente tale metodo non garantir assolutamente di arrivare ad una soluzione,
infatti come tutti i metodi che sfruttano il gradiente per trovare gli zeri o il
minimo di una funzione arriva a convergenza sulla soluzione cercata solo se
il dato iniziale abbastanza buono (tuttavia in questo caso garantisce una
convergenza quadratica).
Quindi per superci che hanno una sola intersezione se non si parte da un
punto abbastanza buono si rischia di divergere, mentre per casi pi complicati
con pi di una intersezione si rischia di arrivare a soluzioni non desiderate.
Per di pi le intersezioni vengono cercate allinterno del piano parametrico
[0, 1] x[0, 1], e non detto che il metodo di Newton non sfori i limiti del
dominio durante le iterazioni.
Lalgoritmo presentato di seguito ha quindi valenza solo concettuale, non
104 CAPITOLO 4. SUPERFICI DI BZIER
verranno quindi discussi i dettagli implementativi e gli accorgimenti necessari
a farlo funzionare in maniera stabile nei casi pratici.
Concettualmente i passi da fare sono due:
denizione di una funzione che rappresenti la distanza fra due punti
appartenenti alle due superci delle quali si vuole trovare uninterse-
zione
determinare lo jacobiano di tale funzione
Distanza Epossibile scegliere come distanza il vettore delle distanze lungo
le singole direzioni al quadrato nello spazio sico. Quindi la generica funzione
che misura la distanza fra due superci S
1
e S
2
sar denita nel seguente
modo:
D(u
1
, u
2
, u
3
, u
4
) =
_
_
_
_
_
_
_
_
_
_
_
_
_
_
(S
x
1
1
(u
1
, u
2
) S
x
1
2
(u
3
, u
4
))
2
(S
x
2
1
(u
1
, u
2
) S
x
2
2
(u
3
, u
4
))
2
.
.
.
(S
xn
1
(u
1
, u
2
) S
xn
2
(u
3
, u
4
))
2
_
_
_
_
_
_
_
_
_
_
_
_
_
_
Adesso necessario poter calcolare lo Jacobiano di tale funzione per poter
applicare il metodo di Newton.
Esso sar denito nel seguente modo:
D
i
u
j
ed ogni singolo termine di tale Jaobiano sar:
D
i
u
j
=

u
j
(S
x
i
1
(u
1
, u
2
) S
x
i
2
(u
3
, u
4
))
2
D
i
u
j
= 2 (S
x
i
1
(u
1
, u
2
) S
x
i
2
(u
3
, u
4
))

u
j
(S
x
i
1
(u
1
, u
2
) S
x
i
2
(u
3
, u
4
))
4.5. INTERSEZIONE DI SUPERFICI 105
Nel caso di supercie, (variet a 2 parametri in uno spazio a 3 ) tale ma-
trice avrebbe dimensione 3x4, questo naturale per il fatto che lintersezione
di due superci una variet ad un parametro, quindi visto che il metodo di
Newton cos come stato implementato va alla ricerca di un punto, bisogner
ssarne uno.
Per esempio pensando al caso di unintersezione ala-fusoliera, si andranno
a cercare i punti di intersezione ssando punto per punto il parametro che
si sposta lungo la supercie dellala dal bordo duscita al bordo di uscita
nuovamente.
Da un altro punto di vista si potrebbe considerare tale modo di procedere
come un metodo che cerca lintersezione non di due superci, bens di una
curva con una supercie. Tale curva sar una coordinata curvilinea che giace
su una delle due superci che si vogliono intersecare.
Come gi accennato prima tale metodo non ha una validit generale,
infatti il fatto di trovare o no una soluzione dipendono dalla scelta del pa-
rametro da ssare e dalla scelta del punto di partenza, tuttavia presenta il
grande vantaggio di lavorare solo sui parametri, questo particolarmente
vantaggioso in quanto permette di tenere concettualmente separati il calco-
lo della geometria, e quindi dei poliedri di controllo, dalla generazione della
mesh.
La mesh infatti pu essere generata totalmente sui piani parametrici delle
varie superci, e le intersezioni, se calcolate in questo modo sono solo dei
vincoli su come deve essere generata la mesh su questi piani.
Ad esempio da una fusoliera intersecata con un ala risulter un piano
parametrico con un buco (la cui forma data dallalgoritmo di intersezione),
che delimita le zone da meshare dalle altre.
In ottica ancora pi lungimirante si pu pensare di introdurre delle ripara-
metrizzazioni delle superci, ovvero mappare il piano parametrico originario
modicato nella forma e nella topologia dallintersezione su di un altro pia-
no parametrico, in modo da rendere totalmente trasparente la gestione delle
intersezioni.
106 CAPITOLO 4. SUPERFICI DI BZIER
4.6 Esempi
Figura 4.2: Esempio di raccordo eettuato con un ottavo di sfera
4.6. ESEMPI 107
Figura 4.3: Esempio di raccordo lineare eettuato attraverso un quarto di
cilindro a sezione circolare
Figura 4.4: Esempio di una sezione di ala
108 CAPITOLO 4. SUPERFICI DI BZIER
Figura 4.5: Esempio di Ala composta d pi settori raccordati fra loro, con
variazioni di corda, freccia, diedro , svergolamento e prolo in apertura
Figura 4.6: Esempio di Ala composta d pi settori raccordati fra loro, con il
proprio poliedro di controllo
4.6. ESEMPI 109
Figura 4.7: Esempio di tronco di fusoliera con sezioni variabili
Figura 4.8: Esempio di tronco di fusoliera con sezioni variabili e poliedro di
controllo
CAPITOLO 5
Conclusioni
Chomsky analizza delle idee
verdi che dormono furiosamente
e non analizza invece le brillanti
stupide idee che sono pi che
mai sveglie ed arzille
Carl William Brown
Nellottica di sviluppare uno strumento per la gestione di geometrie nean-
che troppo complesse, ci si imbatte subito nei limiti delle curve di Bzier.
sono richieste curve di ordine elevato per poter soddisfare un elevato
numero di vincoli o per rappresentare accuratamente gure complesse.
(un curva di grado n1, in grado di passare per n punti dati). Le cur-
ve di ordine elevato sono numericamente instabili ed algoritmicamente
inecienti da trattare
curve rappresentate con un unico segmento sono dicili da modicare
in maniera interattiva, infatti per loro stessa natura i cambiamenti non
possono essere locali, quindi un cambiamento in un punto modica la
forma di tutta la curva
111
112 CAPITOLO 5. CONCLUSIONI
Per questi motivi sono state studiate delle generalizzazioni che hanno lo
scopo di porre rimedio ai limiti di tale rappresentazione e di estendere la
trattazione di curve a casi pi generali.
Tali curve sono le NURBS; esse si basano sulle basi B-Spline, che sono
delle generalizzazioni della base di Bernstein.
Attraverso le NURBS possibile costruire curve e superci che siano
polinomiali a tratti raccordate con un certo grado di continuit, non neces-
sariamente lo stesso in tutti i punti.
Fondamentalmente se con le curve di Bzier quando c la necessit di
raccordare curve, si devono fare conti su come deve essere costruito il poliedro
di controllo, con le NURBS, basta scegliere la base opportuna che abbia il
giusto grado di continuit nei punti in cui serve.
Questo un grandissimo vantaggio, che semplica di molto la gestione di
curve e di congurazioni geometriche complesse.