Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Sviluppo di una libreria orientata agli oggetti per il calcolo di NURBS - Presentazione
1. Sviluppo di una libreria orientata agli
oggetti per il calcolo di NURBS con
applicazioni alla grafica 2D e 3D
Antonio Sanfelice
Universit`a degli Studi di Salerno
Corso di laurea in Informatica
Relatore: Dott. Mario Annunziato
A.A. 2009 - 2010
2. NURBS
Cosa sono?
Modello matematico per la rappresentazione di
curve e superfici
Sviluppo iniziato negli anni ’50 per esigenze
industriali
Comunemente usate nei software di computer
grafica
28/10/2010 Made with LATEX 2/18
3. NURBS
Definizione
Equazioni in forma parametrica
Ogni coordinata `e definita come funzione di un
parametro esterno
Generalizzazione di B-Spline e B´ezier spline
Tutte sono combinazioni lineari di un insieme di punti
detti punti di controllo
I pesi utilizzati per le combinazioni sono le funzioni di
base (o blending functions) che sono caratteristiche
del tipo di spline.
28/10/2010 Made with LATEX 3/18
4. NURBS
Funzioni di Base
B´ezier
Jn,i =
n
i
ui
(1 − u)n−i
B-Spline
Ni,1(u) =
1 se xi ≤ u < xi+1
0 altrimenti
Ni,k(u) =
(u − xi)Ni,k−1(u)
xi+k−1 − xi
+
(xi+k − u)Ni+1,k−1(u)
xi+k − xi+1
B-Spline Razionali
Ri,k(u) =
hi Ni,k(u)
n
i=0
hi Ni,k(u)
28/10/2010 Made with LATEX 4/18
5. NURBS
Vettore dei nodi
x ∈ Rn+k+1
: xi ≤ xi+1 ∀i ∈ [1, n + k]
Periodico o Uniforme: Gli elementi del vettore sono
equispaziati;
Aperto: Valori ripetuti all’inizio e alla fine del vettore;
Non uniforme: Nessuna condizione a parte l’ordine non
decrescente.
NURBS ⇒ Non Uniform Rational B-Spline
B-Spline razionale che utilizza un vettore dei nodi non
uniforme
28/10/2010 Made with LATEX 5/18
6. Libreria
Poche librerie disponibili on-line
nurbs++
openNURBS
Sviluppata in Python
portabile
semplice e veloce
Se ci credono Google e la NASA un pensiero ce lo faccio
anche io
Orientata agli oggetti
Riutilizzo di codice
Facile da estendere e personalizzare
28/10/2010 Made with LATEX 6/18
7. Sviluppo
Funzionalit`a
Calcolo di curve e superfici
B´ezier
B-Spline
NURBS
Concatenazione di curve
Approssimazione e interpolazione di curve e superfici
tramite B-Spline
28/10/2010 Made with LATEX 7/18
8. Sviluppo
Algoritmo naive per il calcolo di curve
C(u) =
n
i=0
pi bi(u)
1: for all u do
2: C(u) ← (0, 0)
3: for i = 0 → n do
4: Determina bi(u)
5: C(u) ← C(u) + pibi(u)
6: end for
7: end for
Veloce
Facile da
implementare
Numericamente
instabile
28/10/2010 Made with LATEX 8/18
9. Sviluppo
Algoritmo di de Casteljau
Calcolo ricorsivo di combinazioni convesse
Facile da implementare
Pi`u stabile
Complessit`a computazionale pi`u alta ∼ O(n2
)
P ← p
for i = 0 → n do
for j = 0 → n − i do
Pj = (1 − u)Pj + u Pj+1
end for
end for
return P0
28/10/2010 Made with LATEX 9/18
14. Grafica 3D
Approssimazione di superficie
Punti da approssimare Output della libreria
28/10/2010 Made with LATEX 14/18
15. Grafica 3D
Approssimazione di superficie
Punti da approssimare Output della libreria
28/10/2010 Made with LATEX 15/18
16. Possibili Applicazioni
Scanner 3D
Simulazione meccanica dei muscoli
Ricostruzione paesaggi
Applicazioni anche al di fuori della grafica
Path planning robot mobili ed industriali
Signal Processing
Reti Neurali
28/10/2010 Made with LATEX 16/18
17. Test sui Tempi di esecuzione
Breve confronto con il modulo NURBS di Octave
Misurazioni dei tempi di esecuzione eseguite tramite
la funzione time della bash;
Test: Calcolo di 200 punti di una curva B-Spline
periodica di ordine 4 ottenuta da 19 punti di
controllo.
Strumento real user sys user + sys
La mia libreria 1.484s 0.352s 0.116s 0.468s
Octave 0.758s 0.664s 0.092s 0.756s
28/10/2010 Made with LATEX 17/18