Sviluppo di una libreria orientata agli
oggetti per il calcolo di NURBS con
applicazioni alla grafica 2D e 3D
Antonio Sanfe...
NURBS
Cosa sono?
Modello matematico per la rappresentazione di
curve e superfici
Sviluppo iniziato negli anni ’50 per esige...
NURBS
Definizione
Equazioni in forma parametrica
Ogni coordinata `e definita come funzione di un
parametro esterno
Generaliz...
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
N...
NURBS
Vettore dei nodi
x ∈ Rn+k+1
: xi ≤ xi+1 ∀i ∈ [1, n + k]
Periodico o Uniforme: Gli elementi del vettore sono
equispaz...
Libreria
Poche librerie disponibili on-line
nurbs++
openNURBS
Sviluppata in Python
portabile
semplice e veloce
Se ci credo...
Sviluppo
Funzionalit`a
Calcolo di curve e superfici
B´ezier
B-Spline
NURBS
Concatenazione di curve
Approssimazione e interp...
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 d...
Sviluppo
Algoritmo di de Casteljau
Calcolo ricorsivo di combinazioni convesse
Facile da implementare
Pi`u stabile
Compless...
Sviluppo
Class Diagram: Curve
28/10/2010 Made with LATEX 10/18
Sviluppo
Class Diagram: Superfici
28/10/2010 Made with LATEX 11/18
Grafica 2D
Esempi B-Spline
28/10/2010 Made with LATEX 12/18
Grafica 2D
Approssimazione di curva
Originale su carta
Output della libreria
28/10/2010 Made with LATEX 13/18
Grafica 3D
Approssimazione di superficie
Punti da approssimare Output della libreria
28/10/2010 Made with LATEX 14/18
Grafica 3D
Approssimazione di superficie
Punti da approssimare Output della libreria
28/10/2010 Made with LATEX 15/18
Possibili Applicazioni
Scanner 3D
Simulazione meccanica dei muscoli
Ricostruzione paesaggi
Applicazioni anche al di fuori ...
Test sui Tempi di esecuzione
Breve confronto con il modulo NURBS di Octave
Misurazioni dei tempi di esecuzione eseguite tr...
Grazie
28/10/2010 Made with LATEX 18/18
Upcoming SlideShare
Loading in …5
×

Sviluppo di una libreria orientata agli oggetti per il calcolo di NURBS - Presentazione

558 views
408 views

Published on

Presentazione che ho utilizzato per discutere la mia tesi di laurea nei 5 minuti che mi sono stati concessi.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
558
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Sviluppo di una libreria orientata agli oggetti per il calcolo di NURBS - Presentazione

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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
  10. 10. Sviluppo Class Diagram: Curve 28/10/2010 Made with LATEX 10/18
  11. 11. Sviluppo Class Diagram: Superfici 28/10/2010 Made with LATEX 11/18
  12. 12. Grafica 2D Esempi B-Spline 28/10/2010 Made with LATEX 12/18
  13. 13. Grafica 2D Approssimazione di curva Originale su carta Output della libreria 28/10/2010 Made with LATEX 13/18
  14. 14. Grafica 3D Approssimazione di superficie Punti da approssimare Output della libreria 28/10/2010 Made with LATEX 14/18
  15. 15. Grafica 3D Approssimazione di superficie Punti da approssimare Output della libreria 28/10/2010 Made with LATEX 15/18
  16. 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. 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
  18. 18. Grazie 28/10/2010 Made with LATEX 18/18

×