Introduzione

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.