La Computer Graphics costituisce una delle più diffuse applicazioni dell’informatica. È una disciplina che basandosi su metodi ed algoritmi di Analisi Numerica, insieme con particolari tecnologie e strumenti hardware, consente di visualizzare oggetti mediante il calcolatore. Senza dubbio si può affermare che non esiste applicazione in cui la grafica non possa essere di valido aiuto o quanto meno di complemento. È per questo che la grafica trova ampie applicazioni anche in settori non tecnici,ad esempio nelle indagini demografiche, nell’analisi statistica e nelle applicazioni economiche in genere. A seconda del tipo di applicazione la computer graphics può dividersi in tre categorie principali:
-
grafica
per applicazioni economiche (business graphics);
-
animazione;
-
progettazione.
In
questi ultimi anni le applicazioni della computer graphics nei più svariati
settori economici hanno determinato la nascita di un vero e proprio settore, la Business
graphics. L’obiettivo di tale disciplina è quello di presentare
determinati risultati con l’ausilio di grafici,rendendone così più immediata
la comprensione. Dal punto di vista della programmazione queste applicazioni
sono le più semplici poiché non richiedono né algoritmi particolarmente
complicati né sofisticate risorse hardware per la loro realizzazione. Un altro
interessante settore della Computer Graphics è quello dell’animazione.
Sfruttando l’elevata velocità dei calcolatori attualmente disponibili sul
mercato è possibile codificare programmi in grado di animare disegni con una
risoluzione così spinta da dare la sensazione del movimento continuo. I campi
applicativi sono i più svariati: dalla preparazione dei videogiochi o di
pellicole cinematografiche all’analisi cinematica di un fenomeno; ad esempio
esistono programmi che, simulando gli spostamenti del corpo di un guidatore in
caso d’incidente automobilistico, consentono di decidere quale debba essere la
disposizione migliore all’interno della vettura. Senza dubbio uno dei primi
campi applicativi della computer graphics è stato quello della progettazione. A
seconda dei settori di applicazione essa si divide in quattro categorie:
-
progettazione
elettronica;
-
progettazione
architettonica;
-
progettazione
industriale;
-
progettazione
meccanica.
Per
quanto riguarda il settore elettronico,le principali applicazioni vanno dalla
progettazione dei circuiti integrati a quella di intere schede, con produzione
automatica dei disegni esecutivi e della lista dei componenti necessari alla
produzione. I vantaggi vanno oltre il semplice risparmio di tempo associato
all’esecuzione della parte grafica. Man mano che procede il progetto l’uso
del computer consente di controllare le scelte del progettista in termini di
compatibilità e di interfacciabilità tra i componenti usati e perfino di
operare una selezione tra i diversi componenti similari sulla base delle
caratteristiche richieste. Anche nella progettazione architettonica la computer
graphics si è rivelata estremamente utile. Le principali applicazioni
riguardano l’abitabilità degli ambienti, l’arredamento, l’analisi
strutturale e, nei programmi più complessi, il disegno di viste prospettiche.
Quest’ultima applicazione è ancora in fase di sviluppo, richiedendo software
e hardware molto avanzati; le principali difficoltà risiedono negli algoritmi
di cancellazione delle linee non in vista. Infatti la costruzione di una vista
prospettica o di un’assonometria richiedono lo sviluppo di una complessa
logica per determinare se una data linea è in vista o se viene nascosta da
altri elementi di figura. Le possibilità grafiche del computer sono oggi
ampiamente utilizzate anche in quell’importante settore tecnico-artistico che
va sotto il nome di progettazione industriale (industrial design). Il
campo applicativo dell’industrial design è vastissimo e copre tutti i settori
nei quali al progetto tecnico esecutivo di un determinato prodotto è necessario
associare uno studio estetico approfondito del risultato che si desidera
ottenere. Il computer offre l’opportunità di semplificare enormemente il
lavoro di sintesi di un’idea artistica,che può riguardare la forma di una
suppellettile come il disegno da riprodurre su un tessuto. Così anche gli
stilisti ed i creatori di moda sono attualmente utenti di packages orientati
alla soluzione rapida di problemi grafici associati a questo tipo di attività
altamente creative.
Infine, la progettazione meccanica è l’aspetto più noto della
progettazione assistita dal calcolatore.Essa è spesso identificata con il
C.A.D. stesso, cioè la progettazione automatica nel suo complesso ed è, in
realtà, il capostipite di tutte le altre applicazioni. Già agli inizi degli
anni sessanta, la tecnologia dell’ hardware in campo industriale era ad un
livello tale da permettere di riprodurre con assoluta precisione forme
tridimensionali di ogni tipo per mezzo di macchine utensili. Il passo successivo
da compiere era quello di rendere automatico il controllo di queste macchine
utensili (in inglese Computer Aided Manifacturing
o più brevemente C.A.M) nonché la
progettazione delle forme stesse da realizzare (in inglese Computer Aided
Design o C.A.D). Mentre, come si è detto, l’hardware non costituiva un
problema, il software in grado di realizzare ciò era assolutamente inesistente.
I modelli ed i prototipi venivano prodotti a mano da personale altamente
specializzato, con l’ausilio di strumenti empirici. Ad esempio, fissati alcuni
punti di riferimento,si costruiva un modello fisico mediante strumenti quali le
“spline”, cioè un sottile righello in legno molto flessibile; si ricavava
poi da tale modello un disegno, ad esempio facendo uso di fogli di alluminio. Le
curve così generate venivano riprodotte mediante materiale rigido al fine di
creare un modello guida definitivo. Tale modello guida veniva poi utilizzato per
la produzione mediante macchine munite di pantografo. Naturalmente procedimenti
di questo tipo risultavano lunghi e laboriosi (con conseguente aggravio dei
costi sia di progettazione che di produzione), senza contare poi il fatto che le
forme così definite erano poco accurate ed il modello-guida facilmente
danneggiabile. La possibilità di utilizzare il calcolatore per ottenere
contemporaneamente precisione numerica e rapidità di calcolo avrebbe comportato
l’abbreviazione dei tempi di produzione, una maggiore precisione, migliore
trasmissione dei dati ed ,in definitiva, costi più contenuti. Questa è
l’ovvia motivazione di sistemi chiamati appunto CAD/CAM. Al giorno d’oggi
anche in Italia la parola CAD è ormai entrata a far parte del patrimonio
culturale di chi lavora nei più disperati settori industriali, nonché di
professionisti come ingegneri, architetti, grafici pubblicitari. La diffusa
conoscenza di questa applicazione dell’informatica testimonia una altrettanto
notevole diffusione in Italia di sistemi di progettazione computerizzati.
L’evoluzione del software e le crescenti potenzialità delle piattaforme
hardware impiegate hanno reso l’elaborazione grafica tramite il calcolatore
molto più di una semplice alternativa al tavolo da disegno tradizionale. Il CAD
permette infatti l’agevolazione oltre che dell’operazione di disegno vera e
propria anche di tutto il processo progettuale grazie alla rapidità di
esecuzione, di modifica, di archiviazione dei disegni ed alla presenza di pre e
post-pocessori per la preparazione e la successiva elaborazione dei dati
relativi. Un sistema CAD può essere visto come uno strumento di
“progettazione assistita”. Infatti,oltre all’esecuzione del disegno vero e
proprio esso consente di gestire ed integrare la distinta base (l’elenco dei
componenti il singolo progetto) e l’archiviazione tecnico (possibilità di
richiamare e di riutilizzare progetti precedenti),dunque di ottenere una
maggiore efficienza della fase di progettazione oltre alla integrazione di
questa con la fase di produzione.
Si analizzano ora quali sono le caratteristiche che si richiedono ad un
sistema CAD.
Un tale sistema deve fornire la possibilità di progettare o lavorare su
oggetti che appartengono in genere ad una di queste tre categorie:
a.
oggetti che fanno parte di
un meccanismo complesso nel quale giocano un ruolo importante e la cui efficacia
dipende strettamente dalla loro forma (ad esempio la lama di una turbina o la
carrozzeria di una macchina da corsa). Di solito la loro forma è stata
determinata con sperimentazioni successive e va riprodotta con la migliore
precisione possibile.
b.
oggetti che hanno solo una
funzione estetica: il modello è di solito fatto a mano da una persona dotata e
va riprodotto correttamente anche se non è necessaria una precisione rigorosa.
Importanti sono in questi casi la continuità della forma e la curvatura: nella
riproduzione si rischia di perdere quella caratteristica generale di armonia che
l’artista ha dato al prototipo.
c.
oggetti che non hanno né
pretese estetiche né di grande precisione ma che vanno assemblati tra di loro,
ad esempio incollati: è necessaria grande precisione solo nelle zone di
contatto.
In
tutti questi casi la caratteristica
fondamentale del sistema CAD è la capacità di esprimere
come
insiemi di numeri la forma di un oggetto e di operare su di essa utilizzando il
calcolatore, sia che si tratti dell’ala di un aereo sia che si tratti di una
semplice bottiglia. Inoltre a questa rappresentazione numerica della forma si
richiede che:
a.
sia applicabile ad una gran varietà di forme geometriche (linee, cerchi,
coniche ed eventualmente anche curve di grado superiore);
b.
permetta di operare su queste forme per mezzo di calcoli semplici;
c.
sia indipendente dal sistema di coordinate;
d.
sia facilmente utilizzabile anche da non matematici.
Un tipo di rappresentazione di curve e superfici che risponde a queste esigenze è quella parametrica. Dal punto di vista matematico,tale rappresentazione offre rispetto alla forma analitica molti vantaggi di cui alcuni sono i seguenti:
a.
è una rappresentazione di tipo esplicito;
b.
permette di usare la forma vettoriale che ha il pregio di essere concisa
e consente di esprimere la curva come combinazione lineare a coefficienti
vettoriali di funzioni scalari;
c.
è indipendente dal sistema di riferimento;
d.
permette di calcolare separatamente le componenti e di usare la stessa
routine per il calcolo di ciascuna componente riducendo così la complessità
dei programmi;
e.
permette di esprimere coefficienti angolari infiniti il che è una
caratteristica desiderabile dal momento che spesso i profili degli oggetti hanno
tangenti verticali.
La teoria delle curve e superfici parametriche era già ben nota negli anni sessanta e costituiva una parte ben assestata della geometria. Curve e superfici parametriche, peraltro, non erano state studiate da un punto di vista computazionale, pertanto ben poco era noto sulla loro potenzialità di utilizzo di un sistema CAM/CAD. Tant’è che lo studio di tale ampia problematica ha costituito, praticamente da solo, il nucleo di base di una nuova disciplina a sé stante, il C.A.G.D. cioè Computer Aided Geometric Design, che venne ufficialmente riconosciuta come tale in occasione del congresso organizzato da R.E. Riesenfield presso l’università dello Utah nel 1974. Fu proprio Barnhill a coniare in quella occasione il nome di Computer Aided Geometric Design in cui, come egli stesso puntualizza, l’aggiunta dell’aggettivo “geometric” sta ad evidenziare il fatto che l’attenzione è limitata agli aspetti matematici del CAD. In pratica i geometri computazionali studiano gli aspetti algoritmici e la misura della complessità di problemi geometrici che coinvolgono semplici oggetti geometrici come punti, linee, segmenti di linee, poligoni, cerchi e archi di circonferenza, sfere e poliedri. Alcuni problemi classici sono: calcolare il dominio convesso di un insieme di punti; determinare i punti di intersezione di un insieme di segmenti; triangolare un poligono semplice. Mentre lo scopo è teorico ed algoritmico, il campo della geometria computazionale riguarda oggetti geometrici.
In questo corso introdurremo diverse rappresentazioni per le curve e superfici e le relative operazioni geometriche. Ci soffermeremo a lungo sul disegno di curve usando delle approssimazioni (curve di Bezier), curve B-spline, curve NURBS. Questi risultati saranno estesi alle superfici. Evidenzieremo gli aspetti computazionali inerenti i problemi geometrici.