• Non ci sono risultati.

Conversione da B´ ezier a MD-spline

Nel documento Modellazione Geometrica con MD-Spline (pagine 65-71)

4.3 Algoritmi per curve MD-Spline

4.3.6 Conversione da B´ ezier a MD-spline

L’algoritmo di conversione dalla rappresentazione di B´ezier a tratti ad MD-spline `e costituito dai seguenti passi:

1. si itera sui tratti della curva di B´ezier salvando il grado di ogni tratto e la relativa ampiezza parametrica dell’intervallo di definizione ed impo- nendo una continuit`a C0 nei punti di raccordo. Al termine si saranno quindi costruiti i vettori ∆, N e K e sar`a possibile definire lo spazio S(PN, K, ∆) a cui appartiene la curva MD-spline;

2. i punti di controllo della curva MD-spline vengono ottenuti da quelli della curva di B´ezier a tratti prendendo una sola volta quelli comuni di raccordo tra due segmenti.

Si osservi che, nel primo passo, viene imposta una continuit`a C0 dal momento che una curva di B´ezier a tratti non contiene alcuna informazione sulle continuit`a nei punti di raccordo. Possiamo dire di avere una curva MD-spline non in forma minima, per cui si esegue un passo ulteriore per ottenere la forma minima.

3. si applica alla curva MD-spline ottenuta dai precedenti due passi l’al- goritmo di knot-simplify, descritto in 4.3.1.

Al termine di quest’ultimo passo, lo spazio multi-degree S(PN, K, ∆) as-

sociato alla curva MD-spline sar`a stato opportunamente modificato in modo che il vettore K contenga i reali valori di continuit`a presenti nei punti di raccordo della curva di B´ezier.

Capitolo 5

Modellazione di curve

MD-spline

In seguito allo studio teorico delle curve MD-spline, il lavoro di tesi si `e focalizzato sul lato implementativo delle stesse. In particolare, questo ha comportato la modifica di un software di modellazione esistente, chiamato Mini-System, che inizialmente permetteva di gestire solo curve di B´ezier a tratti. A questo `e stata aggiunta la possibilit`a di creare curve MD-spline e di modellarle, in maniera interattiva, utilizzando gli algoritmi di editing visti nei capitoli precedenti.

`

E importante sottolineare che, in seguito alle modifiche effettuate, il Mini-System `e il primo software a consentire la modellazione da zero di cur- ve MD-Spline, possibilit`a non fornita nemmeno dai pi`u noti software CAD commerciali.

In questo capitolo si vanno a descrivere le funzionalit`a che sono state aggiunte al Mini-System per renderlo a tutti gli effetti un software di model- lazione di curve MD-spline. L’ultima sezione del capitolo illustra un esem- pio di modellazione, eseguita mediante il suddetto software, che permette di apprezzare i vantaggi offerti dalla rappresentazione spline multi-degree.

5.1

Introduzione al Mini-System

Il Mini-System `e un software didattico, nato inizialmente come strumento di supporto e di esercitazione per gli studenti frequentanti i corsi di Calcolo Numerico e di Grafica tenuti all’Universit`a di Bologna.

Il codice `e scritto in linguaggio C e per la parte grafica fa uso delle librerie SDL 2.0, sia per le funzioni di disegno che per la GUI. Quest’ultima, mostrata in figura 5.1, `e composta da quattro componenti:

• una barra di menu a tendina, posizionata nella parte alta della finestra; • una barra di due colonne di bottoni, nella parte sinistra della finestra; • un’area informativa, posizionata nella parte bassa della finestra; • un’area di disegno, in cui si creano e modellano le curve.

Piecewise Spline MD dialog Algoritmi di editing MD Polyline

Figura 5.1: L’interfaccia del Mini-System

Il Mini-System, nella sua versione originaria, permetteva di sperimentare unicamente con curve di B´ezier a tratti ed algoritmi su polinomi e polinomi a tratti espressi nella base di Bernstein.

5.1 Introduzione al Mini-System 61

Il motivo per cui tale sistema `e stato ritenuto, fin da subito, il candidato ideale per l’implementazione delle curve MD-spline `e che questo rende dispo- nibile un motore di calcolo efficiente che opera sulla rappresentazione locale della curva, ovvero su polinomi di Bernstein nei singoli intervalli. Le relative funzioni di calcolo possono quindi essere sfruttate anche con curve MD-spline il cui spazio sia localmente generato proprio dalla base di Bernstein.

La generalizzazione del Mini-System a sistema di modellazione di curve MD-spline `e avvenuta mantenendo la netta distinzione tra funzioni di cal- colo e interfaccia di modellazione. Mentre le prime, tra cui ad esempio gli algoritmi che determinano i punti di intersezione tra curve o quelli che ne permettono di fare lo split, sfruttano la rappresentazione locale nella base di Bernstein per garantire l’efficienza computazionale e sono state in gran parte ereditate dalla versione originaria del Mini-System, la seconda `e com- pletamente nuova e permette di agire sui punti di controllo, gradi, continuit`a, nodi ed ampiezze parametriche della curva MD-spline allo scopo di garantire all’utente la migliore esperienza possibile di modellazione. In pratica, ogni curva MD-spline presente nel sistema ha sempre associata una corrisponden- te rappresentazione di B´ezier a tratti che pu`o essere passata alle funzioni di calcolo. In tal modo `e possibile combinare i vantaggi offerti dagli efficienti algoritmi che operano su polinomi di Bernstein con i vantaggi offerti dalla modellazione con MD-spline.

Lo sviluppo del software ha comportato l’implementazione delle nuove funzionalit`a, sia grafiche che di calcolo, relative alle curve MD-spline, nonch´e l’estensione di numerose funzioni preesistenti affinch´e potessero gestire il caso multi-degree. In particolare, le principali aggiunte sono le seguenti:

• sono state implementate le funzioni relative alla definizione dello spazio multi-degree, alla valutazione di una curva MD-spline (calcolo delle funzioni di transizione e delle funzioni base Multi-Degree), gli algoritmi di conversione tra le rappresentazioni di B´ezier ed MD-spline e tutti gli algoritmi di editing discussi nei precedenti capitoli;

curve MD-spline sono state rese accessibili attraverso la pre-esistente GUI del Mini-System;

• l’interfaccia `e stata arricchita di varie funzionalit`a grafiche che permet- tono all’utente di modellare le curve MD-spline in maniera interattiva.

Osservazione 5.1. Dal momento che nel Mini-System sono stati implemen- tati gli algoritmi di conversione da MD-spline a Bezi´er e viceversa, descritti in 4.3.4 e 4.3.6, e siccome una curva MD-spline pu`o ridursi ad una curva B-spline, il Mini-System `e in grado di gestire tutti e tre i tipi di curve.

In figura 5.2 `e schematizzata l’architettura del Mini-System, comprensiva del nuovo modulo MD-spline. Il CONTROLLER traduce i comandi di input (GUI) in chiamate a funzioni di CALCOLO. Il motore di calcolo `e formato da due sottocomponenti che interagiscono tra loro: la prima contiene le funzioni di calcolo che operano sulla rappresentazione locale della curva, mentre la seconda contiene gli algoritmi che permettono di definire e modellare le curve MD-spline. Queste interagiscono tra loro grazie alla possibilit`a di passare dalla rappresentazione MD-spline a quella di B´ezier a tratti e viceversa. Il motore grafico (DISEGNO) si occupa di aggiornare la finestra della GUI tenendo conto delle modifiche eseguite dalle funzioni di calcolo.

Ad esclusione del motore di calcolo, le componenti del sistema utilizzano le librerie SDL 2.0 per le funzionalit`a grafiche e di gestione dell’input.

GUI DISEGNO CONTROLLER SDL 2.0 CALCOLO MD-spline Bézier

Nel documento Modellazione Geometrica con MD-Spline (pagine 65-71)

Documenti correlati