Ferguson nel 1963 utilizzò le equazioni parametriche cubiche per ottenere un modello geometrico di una fusoliera, che passava per due punti estremi e con dei valori delle tangenti in tali punti. Il metodo di Ferguson è un caso particolare dell’interpolazione polinomiale piana risolta da Hermite, che considerò il caso generale dell’interpolazione passanti per n punti con assegnate tangenti in tali punti.
La curva parametrica di Ferguson permetteva un più facile controllo delle proprietà geometriche anche per curve 3D e poiché venivano assegnate 4 condizioni si otteneva che la curva polinomiale doveva essere di 3 grado, cioè una cubica.
Se si considera un punto della curva r(t) si ha:
dove i coefficienti a sono quattro vettori che dipendono dalle 4 condizioni imposte alla curva. Ferguson assegno i due punti estremi r(0), r(1) e le rispettive derivate r‘(0) e r‘(1), per cui dalla (2.25) si ha:
Risolvendo il precedente sistema è possibile esprimere la (2.26) in funzione delle condizioni assegnate, ottenendo:
.
Il vettore tangente alla curva (3.7) è:
.
Ovviamente, i vettori derivate r’(0) e r’(1) sono proporzionali ai versori tangenti T(0) e T(1) della curva r(t), pertanto se sono noti i versori tangenti si ha r’(0)=α0T(0) e r’(1)=α1T(0), dove α0 e α1 sono due valori scalari.
Le funzioni:
sono dette funzioni di blending e si osserva che la somma delle prime due funzioni è per qualsiasi t sempre uguale a 1.
È possibile esprimere la (2.27) mediante la seguente formula matriciale:
Problema 2.12: Calcolare la curva piana di Ferguson avente le seguenti condizioni: r(0)=(0,0), r(1)=(1,1/2), r’(0)=(1,0), r’(1)=(0,1). Calcolare, inoltre, la derivata per t=0.5
Soluzione: Sostituendo i valori assegnati nella (2.27) e poiché la curva è piana con z(t)=0 e considerando solo le componenti x(t) e y(t) si ha:
.
La derivata è:
che per t=0.5 assume il valore 2/5 a cui corrisponde il punto di coordinate r=(22/125,2/25,0).
Verso il 1962 P. Bézier sviluppò presso la Renault un sistema software (UNISURF) per rappresentare i pannelli dei veicoli.
Egli inizialmente definì delle curve cubiche parametriche che venivano controllate da quattro punti, ottenendo una formulazione simile alla curva di Ferguson. Successivamente generalizzò il suo metodo per ottenere delle curve che venivano definite da n punti, dove il primo e l’ultimo punto erano anche punti di inizio e fine della curva.
Il poligono costituito dai precedenti punti venne indicato come poligono di controllo e la forma di queste curve poteva essere facilmente modellata facendo variare la posizione di uno o più punti di controllo.
Se indichiamo con Pi (0≤i≤n) gli n+1 punti di controllo, la curva di Bèzier sarà una curva polinomiale di grado n, data da:
Le componenti della (3.8) si ottengono considerando le corrispondenti componenti dei punti di controllo. Le funzioni base (o di raccordo) della (3.8) sono i polinomi di Bernstein Bi,n(t), che per un assegnato n sono date da
dove è il coefficiente binomiale.
I polinomi di Bernstein possono essere definiti per qualsiasi valore di t ma nell’intervallo [0,1] assumono valori compresi nell’intervallo [0,1], in particolare si ha:
B0,n(0)=1 e Bn,n(1)=1, e Bi,n(0)=Bi,n(1)=0 per 0 <i<n.
Dalla formula dello sviluppo di una potenza di un binomio (a+b)n, si osserva che nel nostro caso si ha a=t e b=1-t , pertanto:
Eseguendo la derivata prima della (3.7) si ha:
r’(0)=n(r1-r0) e r’(1)=n(rn-rn-1).
Ad, esempio, per n=3 i 4 quattro polinomi di Bernstein sono:
Le proprietà della curva di Bèzier dipendono da quelle dei polinomi di Bernstein, in particolare si ha che:
Se P0=Pn la curva è chiusa.
È facile verificare che per n=1 la curva di Bèzier è la retta interpolante avente per estremi i due punti di controllo, cioè:
r(t)=tP0+(1-t)P1.
Un inconveniente della curva di Bèzier è che il suo grado dipende dal numero dei punti di controllo ed inoltre se si sposta un punto di controllo tutta la curva si modifica.
Nelle applicazioni pratiche, quando si hanno molti punti di controllo, un modo per superare la precedente dipendenza consiste nel suddividere il poligono di controllo. È ovvio, che nei punti di suddivisione i tratti di curva, in generale, hanno un ordine di continuità uguale a zero.
Per avere in questi punti un ordine di continuità maggiore, occorre utilizzare le proprietà del poligono di controllo. Così se si vuole che i segmenti di curva prima e dopo un punto di suddivisione abbiano in tale punto lo stesso valore della derivata prima, è necessario che vi sia un allineamento tra il punto di suddivisione e i punti precedente e successivo del poligono di controllo.
Alcune curve analitiche semplici che non sono curve polinomiali, come il cerchio, non possono essere descritte come curve di Bézier, ma , come si è visto in precedenza, possono essere descritte da polinomi razionali.
Per tale motivo sono stati introdotte le curve di Bézier razionali, data da:
dove gli hi sono dei valori non negativi detti pesi ed associati ai punti di controllo.
Le Rn,i(t) sono funzioni razionali di base definite mediante i polinomi di Bernstein.
Nella fig. in alto è riportata una curva chiusa di Bézier definita da 5 punti di controllo, mentre nella fig. in basso sono riportate 5 curve di Bézier razionali, definite da 7 punti di controllo e dove al punto di controllo P3 vengono assegnate rispettivamente i pesi h3= 0,1,2,4,5,1000, si osserva che quando h3=1000 l’unico punto di controllo che influisce sulla curva, oltre ai due estremi, è il punto P3.
Le curve B-splines, analogamente alla curve di Bèzier, permettono di generare delle curve a partire da un poligono di controllo. Le curve B-splines hanno il controllo locale della curva e il loro grado non dipende dal numero dei punti di controllo.
Le funzioni basi delle curve B-splines sono delle particolari funzioni polinomiali dette funzioni B-splines, le cui interessanti proprietà , secondo alcuni studiosi, anche se sotto una diversa formulazione matematica, erano note anche ad Eulero.
Nel 1946 il matematico Schoenberg propose un metodo per risolvere un problema di interpolazione utilizzando particolari funzioni B-splines. Ma la diffusione delle B-splines nelle applicazioni CAD si ebbe solo a partire dal 1972. Infatti, in tale data Cox, de Boor e Mandfield, riuscirono a definire in modo ricorsivo le funzioni B-splines.
Una generica funzione di ordine n è ricorsiva se dipende dalle funzioni di grado inferiore. La formula ricorsiva si basa su un ragionamento induttivo ed in generale è data da:
Fn=G(Fn-1,…,Fn-i) n≥i (3.11)
La prima funzione ricorsiva che si può calcolare con la (2.30) è quella di ordine i, che dipende dalle assegnate condizioni iniziali Fi-1,…,F0.
Molti problemi presentano delle soluzioni ricorsive, ad esempio i numeri di Fibonacci sono definiti dal seguente algoritmo ricorsivo:
Fn=Fn-1+Fn-2 per n>1 e con F0=0 e F1=1
Analogamente, la funzione potenza n-ma di un monomio (axn) può essere espressa nella seguente formula ricorsiva:
Fn(x)=xFn-1 per n>0 e con F0=a
Per poter costruire una funzione B-splines occorre assegnare un ordine k (k-1=grado del polinomio) ed un insieme di numeri T={t0,t1,..,tm}, ordinati in modo crescente (ti≤ti+1), che viene chiamato vettore nodi (knots).
L’algoritmo ricorsivo della funzione B-spline Mk,i(t) di ordine k è dato da:
Dove:
Si osserva che Mk,i(t) assume valori positivi e diversi da zero solo nell’intervallo ]ti,ti+k[, mentre è uguale a zero per tutti gli altri valori.
Una funzione B-spline di ordine k è una funzione polinomiale spline, cioé è costituita da un insieme di segmenti, ciascuno definito nell'intervallo [tj,tj+1], inoltre essa è una funzione continua Ck-2.
Due segmenti di tale funzione hanno in comune un nodo e su tale nodo sono differenti i valori della derivata (k-1).
Se i knots sono equidistanti la B-spline è detta uniforme, viceversa si ha una B-spline non uniforme.
Una particolare B-spline non-uniforme è quando alcuni knots assumono lo stesso valore, in questi casi si dice che i knots hanno una molteplicità p, che deve essere inferiore k.
Nel caso di knots multipli si verifica che alcuni denominatori della (3.12) assumono valori zero, in questi casi si pone tutta la frazione eguale a zero.
Una molteplicità p di un nodo comporta che la funzione B-spline in quel nodo presenta una continuità uguale a Ck-1-p.
Problema 3.6: Calcolare le funzioni B-splines di ordine 4 per T={0,1,1,3,4,5}.
Partendo dalle B-splines di ordine uno (condizioni iniziali) si possono calcolare tutte le B-spline di ordine 2, che sono le seguenti:
…
..
…
Analogamente, le B-splines di ordine 3 sono:
..
…
Infine, possiamo calcolare le due funzioni B-splines di ordine 4, che sono definite rispettivamente sui nodi {0,1,1,3,4} e {1,1,3,4,5}:
…
Fig. 3.8: Grafico delle funzioni M2,i(t), i=0,1,2. Fig. 3.9: Grafico delle funzioni M2,0(t), M2,1(t) e M3,0(t)
Se indichiamo con Pi (0≤i≤n) gli n+1 punti di controllo, la curva B-splines di ordine k sarà una curva polinomiale data da:
Le componenti della (2.32) si ottengono considerando le corrispondenti componenti dei punti di controllo.
In generale, a una curva aperta si assegna una molteplicità k ai primi e ultimi valori dei knots, per cui si pone t0=…=tk-1 e tm-k+1=…=tm .
Se il vettore nodi è costituito da solo due valori aventi molteplicità p=k, come [0,0,0,1,1,1] dove k=3, le 3 funzioni B-spline di ordine k diventano i 3 polinomi di Berstein Bi,n(t) di grado n=k-1=2.
Pertanto, le curve B-spline contengono come casi particolari anche le curve di Bézier.
Inoltre, poiché su m+1 knots è possibile definire solo m-k+1 funzioni B-splines di ordine k, si ha che i punti di controllo devono essere m-k+1, per cui nella (3.13) n=m-k.
Analogamente alle curve razionali di Bézier, anche per le curve B-spline è possibile avere una curva B-spline razionale.
Da alcuni anni molti sistemi CAD permettono di ottenere le curve B-spline non uniformi e rationali, che vengono indicate con l’acronimo NURBS (Non Uniform Rational B-Spline).
Utilizzando opportuni pesi e sequenze di nodi è possibile modellare con le NURBS curve molto complesse.
In particolare, è possibile che due segmenti distinti di curve possono essere rappresentate da un’unica NURBS, ciò si ottiene assegnando una molteplicità uguale o maggiore a k ad un nodo interno. Infatti se il nodo ti ha molteplicità p=k, la continuità della NURBS in ti è uguale a k-1-p=-1, cioè la curva è discontinua in ti.
2. Classificazione modellazione solida
4. Alcune applicazioni dei vettori
8. Interpolazione ed approssimazione di punti
10. Assemblaggio e Modellazione CAD
11. Introduzione al CATIA e Sketcher
13. Part Design - parte seconda
14. Drafting