Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D La Corte in Rete
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Esamuele Santoro » 5.Curve parametriche


Curve cubiche di Ferguson

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:

\mathbf{r}(t)=\mathbf{a}_{0}+t\mathbf{a}_{1}+t^{2}\mathbf{a}_{2}+t^{3}\mathbf{a}_{3}\; con\;0\leq t\leq1

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:
\begin{array}{ccccc}\mathbf{a}_{0} & & & & =\mathbf{r}(0)\\\mathbf{a}_{0} & +\mathbf{a}_{1} & +\mathbf{a}_{2}+ & \mathbf{a}_{3} & =\mathbf{r}(1)\\& \mathbf{a}_{1} & & & =\mathbf{r}'(0)\\& \mathbf{a}_{1}+ & 2\mathbf{a}_{2}+ & 3\mathbf{a}_{3} & =\mathbf{r}'(1)\end{array}

Curve cubiche di Ferguson

Risolvendo il precedente sistema è possibile esprimere la (2.26) in funzione delle condizioni assegnate, ottenendo:

\mathbf{r}(t)=\mathbf{r}(0)(1-3t^{2}+2t^{3})+\mathbf{r}(1)(3t^{2}-2t^{3})+\mathbf{r}'(0)(t-2t^{2}+t^{3})+\mathbf{r}'(1)(-t^{2}+t^{3})~~~~~(3.7).

Il vettore tangente alla curva (3.7) è:

\mathbf{r'}(t)=\mathbf{r}(0)(-6t+6t^{2})+\mathbf{r}(1)(6t-6t^{2})+\mathbf{r}'(0)(1-4t+3t^{2})+\mathbf{r}'(1)(-2t+3t^{2}).


Curve cubiche di Ferguson

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:

f_{1}(t)=(1-3t^{2}+2t^{3}), f_{2}(t)=(3t^{2}-2t^{3}), f_{3}(t)=(t-2t^{2}+t^{3}), e f_{4}(t)=(-t^{2}+t^{3})

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:
\mathbf{r}(t)=\left[\begin{array}{cccc}1 & t & t^{2} & t^{3}\end{array}\right]\left[\begin{array}{cccc}1 & 0 & 0 & 0\\0 & 0 & 1 & 0\\-3 & 3 & -2 & -1\\2 & -2 & 1 & 1\end{array}\right]\left[\begin{array}{c}\mathbf{r}(0)\\\mathbf{r}(1)\\\mathbf{r}'(0)\\\mathbf{r}'(1)\end{array}\right]

Curve cubiche di Ferguson (segue)

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:

x(t)=t+t^{2}-t^{3} e y(t)=t^{2}/2.

La derivata è:

\frac{dy}{dx}=\frac{dy/dt}{dx/dt}=\frac{t}{1+2t-3t^{2}}

che per t=0.5 assume il valore 2/5 a cui corrisponde il punto di coordinate r=(22/125,2/25,0).

Curve di Bézier

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:

\mathbf{r}(t)=\sum_{i=0}^{n}\mathbf{P}_{i}B_{i,n}(t)\;\quad0\leq t\leq1 ~~~~~~(3.8)

Curve di Bézier (segue)

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 B_{i,n}(t)=C(n,i)t^{i}\left(1-t\right)^{n-i}

dove  C(n,i)=n !/[i!(n-i)!] è 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:

\sum B_{i,n}(t)=1\quad\forall t\in\left[0,1\right]

Eseguendo la derivata prima della (3.7) si ha:

r’(0)=n(r1-r0) e r’(1)=n(rn-rn-1).

Curve di Bézier

Ad, esempio, per n=3 i 4 quattro polinomi di Bernstein sono:

B_{0,3}(t)=(1-t)^3~~~~, ~~~~B_{1,3}(t)=3t(1-t)^2~~~~, ~~~~~B_{2,3}(t)=3t^2(1-t)~~~~,~~~~B_{3,3}(t)=t^3

Fig. 3.4: i precedenti quattro polinomi di Bernstein.

Fig. 3.4: i precedenti quattro polinomi di Bernstein.


Curve di Bézier

Le proprietà della curva di Bèzier dipendono da quelle dei polinomi di Bernstein, in particolare si ha che:

  • la curva interpola il primo e l’ultimo punto di controllo e in tali punti è tangente, rispettivamente, al primo e all’ultimo segmento del poligono caratteristico
  • la curva è racchiusa nel poligono caratteristico

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.

Curve di Bézier

Nella Fig. 3.5 è mostrata una curva di Bézier costituita da due poligoni di controllo.

Nella Fig. 3.5 è mostrata una curva di Bézier costituita da due poligoni di controllo.


Curve di Bézier

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:

\mathbf{r}(t)=\frac{\sum h_{i}\mathbf{P}_{i}B_{n,i}(t)}{\sum h_{i}B_{n,i}(t)}=\sum\mathbf{P}_{i}R_{n,i}(t)

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.

Curve di Bézier

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.

Curva di Bézier non razionale.

Curva di Bézier non razionale.

Curva di Bézier razionale.

Curva di Bézier razionale.


Curve parametriche B-splines

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.

Curve parametriche B-splines

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:

M_{k,i}(t)=\frac{t-t_{i}}{t_{i+k-1}-t_{i}}M_{k-1,i}(t)+\frac{t_{k+i}-t}{t_{k+1}-t_{i+1}}M_{k-1,i+1}(t)

Dove:

M_{1,j}(t)=\begin{cases}\begin{array}{c}1\; per\; t_{j}\leq t\leq t_{j+1}\\0\; altri\; valori\end{array}\end{cases}~~~~(3.12)

Curve parametriche B-splines

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.

Curve parametriche B-splines

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:

M_{2,0}(t)=tM_{1,0}(t)+\frac{1-t}{1-1}M_{1,1}(t)=tM_{1,0}(t)

M_{2,1}(t)=\frac{t-1}{1-1}M_{1,1}(t)+\frac{3-t}{2}M_{1,2}(t)=\frac{3-t}{2}M_{1,2}(t)

..

M_{2,2}(t)=\frac{t-1}{2}M_{1,2}(t)+\frac{4-t}{1}M_{1,3}(t)

M_{2,3}(t)=\frac{t-3}{1}M_{1,3}(t)+\frac{5-t}{1}M_{1,4}(t)

Curve parametriche B-splines

Analogamente, le B-splines di ordine 3 sono:

M_{3,0}(t)=\frac{t}{1}M_{2,0}(t)+\frac{3-t}{2}M_{2,1}(t)=t^{2}M_{1,0}(t)+\frac{(3-t)^{2}}{4}M_{1,2}(t)

..

M_{3,1}(t)=\frac{t-1}{2}M_{2,1}(t)+\frac{4-t}{2}M_{2,2}(t)=\frac{t-1}{4}(7-2t)M_{1,2}(t)+\frac{(4-t)^{2}}{2}M_{1,3}(t)

M_{3,2}(t)=\frac{t-1}{2}M_{2,2}(t)+\frac{5-t}{2}M_{2,3}(t)

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}:

M_{4,0}(t)=\frac{t}{3}M_{3,0}(t)+\frac{4-t}{3}M_{3,1}(t)


M_{4,1}(t)=\frac{t-1}{3}M_{3,1}(t)+\frac{5-t}{2}M_{3,2}(t)

Curve parametriche B-splines

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)

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)


Curve parametriche B-splines

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:

\mathbf{r}(t)=\sum_{i=0}^{n}\mathbf{P}_{i}M_{k,i}(t)\;\quad t_{0}\leq t\leq t_{n}~~~~(3.13)

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.

Curve parametriche B-splines

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.

I materiali di supporto della lezione

Appunti a cura del docente

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion

Fatal error: Call to undefined function federicaDebug() in /usr/local/apache/htdocs/html/footer.php on line 93