Algoritmo di subdivision per curve di Bézier razionali

Messaggioda ZetaFunction » 16/12/2011, 15:01

Ciao a tutti,
vorrei sapere se qualcuno è a conoscenza, magari con link in formato elettronico, appunto di un algoritmo di subdivision da applicare alle curve di Bézier razionali (analogamente a quello noto sulle classiche). Grazie in anticipo.
Avatar utente
ZetaFunction
Starting Member
Starting Member
 
Messaggi: 22
Iscritto il: 16/12/2011, 14:43

Re: Algoritmo di subdivision per curve di Bézier razionali

Messaggioda vict85 » 16/12/2011, 15:50

Io ho trovato un bel po' di cose cercando “Bezier subdivision”. Cosa hanno quei link che non vanno?
vict85
Cannot live without
Cannot live without
 
Messaggi: 3383
Iscritto il: 16/01/2008, 00:13
Località: Torino

Re: Algoritmo di subdivision per curve di Bézier razionali

Messaggioda ZetaFunction » 16/12/2011, 15:58

Che riguardano, appunto, l'algoritmo "classico" e non quello applicato alle razionali ;).
Avatar utente
ZetaFunction
Starting Member
Starting Member
 
Messaggi: 22
Iscritto il: 16/12/2011, 14:43

Re: Algoritmo di subdivision per curve di Bézier razionali

Messaggioda vict85 » 16/12/2011, 17:54

vict85
Cannot live without
Cannot live without
 
Messaggi: 3383
Iscritto il: 16/01/2008, 00:13
Località: Torino

Re: Algoritmo di subdivision per curve di Bézier razionali

Messaggioda ZetaFunction » 16/12/2011, 20:13

Ti ringrazio, il pdf è interessante ma contiene solo il De Casteljau. Avevo pensato a ricavarmi da questo la subdivision, ma preferirei andare sul sicuro e trovare l'algoritmo vero e proprio.
Avatar utente
ZetaFunction
Starting Member
Starting Member
 
Messaggi: 22
Iscritto il: 16/12/2011, 14:43

Re: Algoritmo di subdivision per curve di Bézier razionali

Messaggioda apatriarca » 16/12/2011, 21:23

Come immagino tu sappia, la formula generale di una curva di Bézier razionale è
\[ B(t) = \frac{\sum_{i=0}^n w_i \mathbf{b_i} B_{i,n}(t) }{ \sum_{i=0}^n w_i B_{i,n}(t) }, \]
dove \( \mathbf{b_i} \) sono i punti di controllo, \( w_i \) sono i pesi e \( B_{i,n}(t) \) sono i polinomi di Bernstein di grado \( n \). Considera adesso i punti affini \( \mathbf{ \widehat{b}_i } = [ w_i \mathbf{b_i}, w_i ] \). La curva di Bézier razionale sarà allora uguale alla deomogeneizzazione (rispetto all'ultima coordinata) della seguente curva di Bézier integrale nello spazio proiettivo:
\[ \widehat{B}(t) = \sum_{i=0}^n \mathbf{\widehat{b}_i} B_{i,n}(t). \]
Un primo metodo per fare la suddivisione è quindi quello di suddividere la curva dello spazio proiettivo e poi deomogeneizzare il risultato in modo da ottenere il risultato nello spazio affine.

Questo primo metodo, anche se molto semplice ed efficiente, non è però molto robusto in pratica (ci sono casi in cui il metodo è soggetto ad errori). Per questo motivo si preferisce usare un metodo alternativo in cui si deomogenizza ad ogni passo dell'algoritmo di de Casteljau per poi utilizzare i punti di controllo ottenuti dall'algoritmo come al solito per fare la suddivisione. L'algoritmo di Casteljau diventa in questo caso il seguente:
\[ \left\{ \begin{align*}
\mathbf{b_i^j} &= (1 - t) (w_i^{j-1} / w_i^j) \mathbf{b_i^{j-1}} + t (w_{i+1}^{j-1} / w_i^j) \mathbf{b_{i+1}^{j-1}} \\
w_i^j &= (1 - t) w_{i}^{j-1} + t w_{i+1}^{j-1}
\end{align*}\right. \]
In cui abbiamo come al solito che \( \mathbf{b_i^0} = \mathbf{b_i} \) e \( w_i^0 = w_i \).

Ti ricordo solo brevemente quali sono i punti di controllo dell'algoritmo di suddivisione in modo che il post contenga tutte le informazioni necessarie per implementare l'algoritmo. Per la prima curva di Bézier abbiamo come punti di controllo i punti \( \mathbf{b_0^0}, \mathbf{b_0^1}, \dotsc, \mathbf{b_0^n} \), mentre la seconda curva di Bézier ha punti di controllo \( \mathbf{b_0^n}, \mathbf{b_1^{n-1}}, \dotsc, \mathbf{b_n^0} \).
apatriarca
Moderatore
Moderatore
 
Messaggi: 2124
Iscritto il: 08/12/2008, 20:37
Località: Torino

Re: Algoritmo di subdivision per curve di Bézier razionali

Messaggioda ZetaFunction » 16/12/2011, 22:50

Avevo il dubbio proprio su questa analogia col De Casteljau originale. Grazie!
Avatar utente
ZetaFunction
Starting Member
Starting Member
 
Messaggi: 22
Iscritto il: 16/12/2011, 14:43

Re: Algoritmo di subdivision per curve di Bézier razionali

Messaggioda ZetaFunction » 17/12/2011, 11:37

Una domanda solo per scrupolo, anche se immagino la risposta sarà affermativa: i pesi associati ai punti delle due sottocurve saranno gli \( \displaystyle {{w}_{{0}}^{{0}}},{{w}_{{0}}^{{1}}},\ldots,{{w}_{{0}}^{{n}}} \) e \( \displaystyle {{w}_{{0}}^{{n}}},{{w}_{{1}}^{{{n}-{1}}}},\ldots,{{w}_{{0}}^{{n}}} \) rispettivamente?
Avatar utente
ZetaFunction
Starting Member
Starting Member
 
Messaggi: 22
Iscritto il: 16/12/2011, 14:43

Re: Algoritmo di subdivision per curve di Bézier razionali

Messaggioda apatriarca » 17/12/2011, 15:29

Sì, certo.
apatriarca
Moderatore
Moderatore
 
Messaggi: 2124
Iscritto il: 08/12/2008, 20:37
Località: Torino


Torna a Analisi Numerica e Ricerca Operativa

Chi c’è in linea

Visitano il forum: Google [Bot] e 0 ospiti