Andrea Granelli: L'EVOLUZIONE DELLA COMPUTER-GRAPHICS - Nuove frontiere per
l'interazione uomo-computer (Office Automation, feb-set 1986)
1 - PRINCIPI COSTITUTIVI DELLA GRAFICA (feb 1986)
Introduzione
- E' sufficiente guardarsi intorno per rendersi conto del grado di
diffusione raggiunto dalle immagini. Cartelloni pubblicitari, libri
illustrati, manifesti, televisione, cinema; tutte queste realtà hanno in
comune l'utilizzo dell'immagine come tecnica di comunicazione
dell'informazione. Questo fenomeno non rimane però confinato agli strumenti
tipici della comunicazione di massa; è molto più pervasivo. Si pensi alle
molte tecniche diagnostiche non invasive usate dalla medicina (ecografia,
radiografia ...), alle immagini inviate dai satelliti per analizzare il
terreno o fare previsioni meteorologiche, all'utilizzo di tecniche di
grafica computerizzata per aiutare il restauro di opere d'arte. Dice bene
Gombrich ([GOMB73]) quando afferma che la "La nostra è un'epoca
visiva".
- E' in atto un profondo mutamento nelle tecniche di comunicazione, che ha
come effetto macroscopico l'utilizzo sempre più frequente di
"soluzioni visive".
- In questo scenario la Computer Graphics (Grafica computerizzata
per i non anglofili) assume un ruolo di primo ruolo. Essa raccoglie
infatti tutte le tecniche che hanno come soggetto il rapporto fra il
computer e l'immagine. Con ciò non si intende solamente la cosiddetta
"manipolazione di immagini" con l'ausilio del calcolatore, ma
soprattutto la possibilità di utilizzare le immagini per dialogare con i
computers e quindi con la tecnologia. Questa caratteristica diventerà
sempre più importante, visto che è sempre più frequente la produzione di
oggetti di uso comune controllati (e quindi comandabili) da un computer (si
pensi alle lavatrici programmabili, al controllo del consumo sulla macchina,
alla questione del riscaldamento).
- Perciò la grafica permette di semplificare radicalmente l'utilizzo di
strumenti tecnologici. Questo discorso vale anche nel caso industriale, dove
la tendenza a sostituire operai con robots ha fatto prosperare i cosiddetti
calcolatori per il controllo di processo, in cui l'utilizzo della grafica
per rappresentare le fasi del processo del monitorare ha drasticamente
semplificato il loro utilizzo.
- D'altra parte, proprio per i suoi multiformi aspetti, la grafica non è
una disciplina semplice e pur essendo relativamente giovane, vanta
contributi provenienti da discipline molto più antiche e consolidate, come
ottica, fisiologia, semiologia, psicologia. Per questo motivo viene
pubblicata su questa rivista una serie di articoli con lo scopo di
affrontare i suoi diversi aspetti.
- Si parlerà quindi di hardware e software, di strumenti matematici
utilizzati, dei rapporti fra grafica ed informatica e si concluderà questa
breve rassegna con le nuove tendenze del settore. Tra queste si analizzerà
in particolare il rapporto che si sta instaurando tra Computer Graphics ed
Office Automation, la cui importanza strategica è sempre più avvertita
dalle case fornitrici di hardware e software.
- La comprensione di un fenomeno non è però mai completa se non nella sua
dinamica storica. E' quindi opportuno analizzare l'evoluzione delle due
principali teorie che hanno concorso nel porre i fondamenti per la grafica
computerizzata: la teoria del colore e la teoria della visione.
Grafica immagini e realtà
- Il nome GRAFICA può suscitare una certa ambiguità in quanto il suo
etimo, il verbo-greco "γδαφω" (grafo)
ha il duplice significato di disegnare e scrivere (si pensi ad espressioni
come "tracciare il grafico di una funzione", oppure a termini come
"grafologia", "grafomane" o "calligrafia").
- Il suo utilizzo è comunque sempre più legato a tutto quanto riguarda la
comunicazione visiva ed è oramai comune utilizzare come antitetici i
termini grafico/testuale anche se per esempio nel caso del Design il termine
"graphic design" indica colui che si occupa di "sistemare
parole su oggetti" (come magliette, lattine di bibite oppure semplici
fogli di carta), mentre il creatore di immagini che hanno funzione di
comunicazione visiva è detto "visual-design".
- Prima comunque di entrare nei dettagli della disciplina, ritorniamo alla
considerazione iniziale di Gombrich e vediamo in che modo l'immagine visiva
sta in un certo senso proponendosi come nuovo linguaggio. Pur considerando
il linguaggio testuale come strumento privilegiato nella comunicazione,
dobbiamo riconoscere all'immagine un insuperabile potere evocativo. Ciò è
legato al potere che ha l'immagine di creare dei surrogati alla realtà.
- Se scriviamo la parola cane su un pezzo di carta e la mostriamo ad
un bambino, rimarrà presumibilmente indifferente. Se invece gli mostreremo
un disegno od una foto dello stesso soggetto è probabile che rimarrà
interessato. I "surrogati visivi" hanno quindi la caratteristica
di determinare particolari comportamenti e ciò è spiegato dagli etologi
affermando che gli organismi sono "programmati" a rispondere a
certi segnali visivi per facilitare la sopravvivenza. In questo caso la
velocità di acquisizione dell'informazione gioca un ruolo cruciale; come
scrive Orazio nell'Ars Poetica "... Segnius irritant animos demissa per
aurem, quam quae sunt oculis subjecta fidelibus et quae ipse sibi tradit
spectator ..." (La mente dello spettatore è turbata più rapidamente
dall'occhio che dall'orecchio) [HORAAP].
- Non necessariamente però parola ed immagine sono antagonisti. Anzi spesso
una loro cooperazione porta notevoli risultati; si pensi all'antica
"Arte della memoria" che insegnava a tradurre ogni messaggio
verbale in una forma visiva, tanto meglio se strampalata o inverosimile.
- Il vero valore dell'immagine è comunque la sua capacità di trasmettere
informazioni non esprimibili in forma testuale, il fare emergere relazioni
fra dati altrimenti ignorate. Naturalmente queste proprietà non
appartengono ad ogni immagine, ma vi saranno dei criteri da tenere presente
per costruire immagini "informative".
Costruzione dell'immagine
- Accettando l'affermazione di Bertin che "L'informazione è
relazione" [BERT81], possiamo dire che ciò che rende una qualsiasi
rappresentazione grafica immagine
è la possibilità di estrarre un'informazione di insieme, e quindi la
totalità delle relazioni esistenti al suo interno. Questo fatto deriva da
una caratteristica fondamentale della percezione visiva, cioè il cogliere
soltanto dei rapporti fra gli elementi della realtà (piuttosto che gli
elementi stessi). Inoltre queste relazioni devono essere esplicitate in
maniera opportuna altrimenti i tempi di interpretazione dell'immagine
potrebbero essere molto più lunghi dei tempi di lettura della stessa
informazione, espressa però in forma testuale, togliendo quindi
all'immagine il potere evocativo. Per ovviare a queste difficoltà, sono
state introdotte delle tecniche, raggruppate sotto l'etichetta di manipolazione
delle immagini, che permettono di trasformare un'immagine
"confusa" (nel senso appena descritto) in una immagine in cui
vengano esplicitate le relazioni fra i componenti, dotata quindi di un
maggiore contenuto informativo.
- La gamma di applicazioni di queste tecniche è molto ampia. Si va da
algoritmi che riescono a migliorare qualitativamente delle immagini, per
esempio aumentandone il contrasto oppure togliendo il cosiddetto
"rumore di fondo" (usati per esempio per elaborare le immagini
provenienti dai satelliti) a metodologie che permettono di riordinare dati
espressi in forma tabellare, per esplicitare alcune relazioni altrimenti non
riscontrabili (come quelle usate da Bertin in [BERT81]).
- Di queste tecniche tratteremo ampiamente nei prossimi articoli. Intanto
procediamo secondo la "tabella di marcia" ed analizziamo
l'evoluzione della teoria del colore e della teoria della visione.
Teoria del colore
- La prima formulazione di una teoria sul colore dotata, sia di un rigido
formalismo, che di evidenze sperimentali, si deve a Isaac Newton ed in
particolare ai suoi studi sull'ottica (poi raccolti e rielaborati in Optics
nel 1704). La loro base è essenzialmente sperimentale, concentrata
sull'ineguale rifrangibilità dei raggi luminosi. Dapprima egli scoperse che
la luce bianca si decompone quando attraversa un prisma triangolare di
vetro. Poi riuscì a ottenere nuovamente la luce bianca ricomponendo i vari
raggi luminosi ricavati dalla precedente decomposizione. Per spiegare questa
ed altre evidenze sperimentali, Newton formulò l'ipotesi che la luce fosse
costituita da corpuscoli, emessi dalle sostanze luminose; corpuscoli di
dimensione diversa a seconda dei vari colori (di dimensione massima quelli
costituenti la luce rossa, minima quelli costituenti la luce violetta). Una
conseguenza diretta di questa affermazione fu che i colori sono la qualità
originaria ed immutabile (e quindi reale) dei raggi luminosi, mentre il
bianco sarebbe soltanto qualcosa di derivato, ed in un certo senso puramente
soggettivo. Questa teoria riportò in auge la teoria corpuscolare della
luce, che era stata messa in crisi anni prima dalla teoria ondulatoria di
Huygens.
- La teoria di Goethe sui colori (Farbenlehre 1810) era invece vivacemente
contrapposta a quella di Newton. Mentre infatti lo scienziato inglese aveva
affermato che il bianco è un colore composto, e in quanto tale può venir
utilizzato in uno spettro di colori semplici, Goethe lo assunse invece come
colore fondamentale, non analizzabile, e sostenne che gli altri colori
venivano generati da combinazioni opportune di luce bianca ed ombra. Affermò
poi - rifacendosi ad una concezione filosofica generale diffusa in quei
tempi secondo cui la natura possiede la capacità di rivelarsi direttamente
all'uomo - che, anche nello studio dei colori, si deve dare maggiore credito
alla testimonianza diretta dei sensi che non a quella indiretta, fornita da
artificiosi dispositivi strumentali (come per esempio il prisma ottico
utilizzato da Newton). La fama di questa teoria deve molto all'appoggio
entusiastico attribuitole dalle correnti antiilluministiche (come i seguaci
del filosofo Hegel), che cercavano un qualsiasi appiglio pur di screditare
Newton.
- Quello che però sia Newton che Goethe avevano fatto nelle loro teorie era
attribuire una proprietà psicofisiologica (colore) ad una entità esterna
al soggetto osservante.
- Ciononostante la base per la moderna teoria del colore rimane sempre la
scoperta di Newton della scomposizione della luce bianca (1666). più
esattamente lo spettro cromatico può essere diviso in 6 parti principali -
violetto, blu, verde, giallo, arancio, rosso - con una transizione graduale
e sfumata da un colore all'altro.
- I colori che percepiamo di un oggetto vengono determinati dalla natura
della luce riflessa dall'oggetto stesso e non sono quindi una proprietà
intrinseca né della luce né dell'oggetto. Questa idea non è comunque
recente. Scrive nel 1690 il filosofo inglese John Lock: "... La natura
delle nostre semplici idee non muta per il fatto che noi pensiamo che l'idea
del Blu sia nella viola stessa o soltanto nel nostro spirito; e che nella
viola stessa si trovi soltanto il potere di produrlo mediante il tessuto
delle sue parti, riflettendo in una certa maniera le particelle dalla luce
..." [LOCK72].
- Così un corpo che non riflette nessun tipo di luce (cioè l'assorbe
completamente) è detto "corpo nero", mentre se riflette la luce
in eguale misura a tutte le lunghezze d'onda dello spettro visibile (cioè
dal violetto al rosso), appare bianco. per apparire di un determinato
colore, l'oggetto deve riflettere, nel campo visibile, il particolare
intervallo di lunghezze d'onda relativo a quel colore e assorbire il resto.
Kiver, nel 1955, ha dimostrato che le componenti spettrali del rosso (R),
del verde (V) e del blu (B), combinate in varie proporzioni, originano una
vastissima gamma di colori, superiore a quella ottenibile con qualsiasi
altra combinazione di tre colori. Per questo motivo sono detti colori
primari. Se i colori primari vengono sommati, producono i cosiddetti colori
secondari:
- magenta = rosso
+ blu
- ciano =
verde + blu
- giallo =
rosso + verde
- Non è invece ancora ben chiaro come avviene da parte del cervello la
percezione dei colori. A questo proposito sono state sviluppate due teorie.
- La prima, detta teoria dicromatica o di Hering, afferma che nella
percezione intervengono due sostanze: una sensibile al rosso e l'altra al
blu. A queste se ne aggiunge una terza per la luminosità (cioè per
separare bianco/nero).
- La teoria tricromatica di Young-Helmholtz, invece, ipotizza l'esistenza
sulla retina di tre coni, sensibili rispettivamente al rosso, al verde e al
blu. Poiché ogni colore può essere creato miscelando opportunamente
questi tre colori (sono i primari), il colore effettivamente percepito è
dato dalla risultante delle stimolazioni che ciascuno dei tre coni riceve
per la sua componente di colore primario. L'effettiva presenza a livello
retinico di tre tipi di coni, sensibili a luce di lunghezza d'onda diversa
(cioè colori diversi) e le esperienze sulla miscelazione dei colori
primari, fanno di questa teoria la più accettata sia dal punto di vista
fisiologico sia come analogia per la costruzione di dispositivi grafici a
colori (si pensi al sistema RGB, il cui acronimo significa Red-Green-Blue).
- Con questa teoria il colore torna ad essere inerente alla psicofisiologia
dell'osservatore, dipendendo dalla struttura retinica e dalle successive
elaborazioni degli impulsi, da parte del cervello. Quindi il colore è una
entità fisiologica e psicologica esclusivamente soggettiva e pertanto
non fa parte del mondo esterno, perciò non può essere incluso nel dominio
della fisica.
Teoria della visione
- La difficoltà di comprensione del fenomeno della visione si deve
principalmente alla sua natura interdisciplinare. Ottica fisica, fisiologia,
psicologia, tecnica: tutte concorrono nella spiegazione dei meccanismi della
percezione. Questa impostazione si è però formata nel corso della storia.
Fino al '500 l'interazione soggetto-oggetto, nel processo della visione, era
considerata fondamentale e quindi non esisteva una disciplina come l'ottica.
Perciò era necessario stabilire una precisa distinzione tra la luce come
capacità soggettivo-psicologica del vedere e la luce come entità fisica
entrante negli occhi. Lux veniva
detta la prima, lumen la
seconda. Col passare del tempo l'interesse si concentra su Lumen finché
la parola luce viene ad acquistare un solo significato, quello di entità
fisica.
- La parte più vicina alla Computer Graphics è comunque sicuramente
l'Ottica, che descrive le proprietà fisico-geometriche che permettono il
formarsi dell'immagine sulla retina. Pur tralasciando, per economia di
spazio, l'evoluzione storica di questa importante disciplina, va comunque
detto che fu Keplero [LIND76] che per primo risolse il problema (1604
"Ad Vitellionem Paralipomena") di determinare la geometria delle
radiazioni luminose attraverso una fessura di piccole dimensioni. Egli si
accorse infatti che l'immagine veniva "scaravoltata". Dopo una
serie di studi e di esperimenti, affermò che questo fenomeno, talvolta
detto "effetto Camera Oscura", accadeva anche nell'occhio umano;
cioè la luce, entrando nell'occhio da una piccola fessura (la pupilla),
proietta sulla retina, invertita, l'immagine. Questa analogia quindi tra
macchina fotografica e occhio umano (che comprende anche la capacità di
mettere a fuoco, di regolare la quantità di luce entrante), costituisce la
base della moderna teoria della visione.
- L'importanza di questa teoria è legata principalmente alla Robotica, e in
particolare alla realizzazione di Robot che "vedano", che siano
cioè in grado di eseguire delle operazioni in funzione della loro
percezione del mondo esterno. Quindi d'accordo vedere, ma soprattutto
riconoscere; ed in questo ambito entra in gioco l'Intelligenza Artificiale.
- Il problema del riconoscimento automatico delle forma - in inglese Pattern
Recognition - occupa da diversi anni le risorse, umane e di calcolo, di
diversi laboratori di ricerca. Il problema può essere affrontato a vari
livelli. Pionieristici sono stati i sistemi per il riconoscimento della
scrittura (ma non del suo significato) usati per esempio per lo smistamento
automatico della corrispondenza o per l'analisi dei questionari. Più
complessa è invece la costruzione di un Robot che si muove in un certo
"mondo" (composto da una stanza piena di cubi di legno di vari
colori e dimensioni) ed è in grado di eseguire azioni tipo "se il cubo
rosso non ha cubi sopra di lui, mettilo sopra il cubo giallo". Ed è
questo tipo di applicazione, che potremmo chiamare forse un pò
impropriamente "automazione industriale" (in cui il Robot ha ormai
perso la sua connotazione antropomorfa), in cui si sono riversati gli sforzi
principali. Robot che verniciano, che mettono viti, che tagliano scocche,
sono tutti derivati concettualmente dal "manipolatore di cubi".
- Un'altra grossa applicazione del problemi di Recognition si sta delineando
in ambito medico: diagnosi automatica di radiografie (naturalmente non le
lastre ma le radiografie computerizzate, cioè quelle prodotte con la TAC o
con RMN). La soluzione è però ancora lontana in quanto oltre alle
difficoltà di carattere tecnico vi sono anche ambiguità strutturali spesso
non risolvibili (due radiologi che danno due diagnosi differenti partendo da
un'unica lastra) automaticamente. Di questi problemi si parlerà comunque più
in dettaglio nei prossimi articoli.
- Per concludere questa breve introduzione alla Computer Graphics,
bisognerebbe analizzare il complesso rapporto che intercorre tra teoria
della visione e psicologia. Particolarmente significativo è l'approccio
della Psicologia della Gestalt o della Forma che parte dalla percezione
umana e dalle sue talvolta apparenti illusioni ottiche, per delineare una
interessante teoria che rivoluziona il modo di affrontare il problema della
visione e delle attività psichiche correlate.
Proprietà della visione
- Per potere rappresentare adeguatamente delle informazioni in forma
grafica, è opportuno capire il più esattamente possibile come funziona la
percezione visiva nel destinatario di tali informazioni, cioè l'uomo. A
questo proposito elenchiamo di seguito le principali proprietà della
visione, verificate sperimentalmente, che regolano la percezione della luce
e delle immagini:
- Sensibilità al contrasto. La risposta dell'occhio a variazioni
dell'intensità luminosa è di tipo non lineare (più precisamente
logaritmico).
- Effetto di Mach. Considerando un foglio in cui siano presenti delle
strisce uniformi, aventi ciascuna costante livello di grigio (contrasto
bianco-nero), disposte una accanto all'altra, si può sperimentalmente
verificare, osservando, a partire dal nero (a sinistra) verso il bianco (a
destra), che appaiono con i bordi destri più scuri di quelli a sinistra. Ciò
dipende dalla diversa risposta che sistema visivo ha a differenti frequenze
spaziali (l'occhio possiede una sensibilità più bassa a frequenze spaziali
alte e basse rispetto a quella che ha a frequenze intermedie).
- Contrasto simultaneo. Se diversi elementi di una immagine, con la
stessa intensità di grigio, sono posti in immagini diversamente contrastate
(ad esempio su fondo bianco o su fondo nero) appaiono avere intensità di
grigio diverso (sembrano più scuri gli elementi sul fondo più chiaro).
- Adattamento cromatico. L'apprezzamento dei colori dipende
dall'adattamento dell'osservatore a particolari condizioni visive. dopo
avere infatti osservato a lungo una luce di un certo colore, ad alta
intensità, togliendo la luce stessa appaiono immagini di colore
complementare, chiamate "immagini postume".
- Insensibilità ai colori. Una percentuale apprezzabile della
popolazione terrestre è affetta da forme diverse di cecità a i colori o
daltonismo (circa 8% dei maschi e 1% delle femmine).
- Colore soggettivo. Con diverse esperienze (per esempio Fechner nel
1838 utilizzò la rotazione di un disco dipinto per metà di bianco) è
stato dimostrato che impulsi intermittenti di luce bianca possono apparire
diversamente colorati. Ciò è legato alla risposta temporale del sistema
visivo umano ad impulsi di luce.
Psicologia della Gestalt
- La psicologia della Forma (Gestaltpsychologie) trae le sue origini da uno
studio di von Ehrenfels pubblicato nel 1890 col titolo Sulle qualità
formali, in cui si mette in rilievo l'esistenza di determinati
"oggetti percettivi" (le forme spaziali, le melodie ...) che, pur
potendo essere "vissute" soltanto sulla base di date sensazioni
(cromatiche od acustiche ...) non sono propriamente costituite da quelle
sensazioni. Tanto è vero che, mutando l'insieme dei dati sensoriali, quelle
forme spaziali e melodiche rimangono invariate. Questo principio, detto Principio
della trasportabilità delle qualità formali, costituisce l'ossatura
della psicologia della forma.
- I suoi ideatori, M. Wertheimer, K. Kofka e W. Kohler, in polemica con la
psicologia associazionista (secondo cui si descrive il comportamento di un
organismo come somma dei comportamenti delle sue parti) affermano che ogni
percezione si presenta all'esperienza come un tutto unico, cioè come un
fenomeno non risolvibile in una serie di unità elementari giustapposte. In
questo modo il tutto, cioè il comportamento di una struttura
complessa, è molto più che la somma delle sue parti.
- La percezione della forma (così viene chiamata questa entità) è qualche
cosa di immediato, originario e significativo: questo spiegherebbe il
poteree vocativo e di immediatezza dell'immagine rispetto alla parola
scritta/udita. Perciò una analisi che ricerca i componenti di tale
percezione non è che un artificio metodologico, una forzatura che svia
dalla comprensione centrale del problema.
- Per dimostrare queste affermazioni vengono descritte tantissime
situazioni, esperibili da chiunque. Per esempio se noi collochiamo un piato
circolare su di un tavolo e poi lo osserviamo da una certa distanza, alla
domanda "di che forma è quel piatto", risponderemo
"circolare" anche se la nostra posizione ce lo fa vedere ovale.
D'altra parte l'immagine retinica del disco è certamente ovale. Perciò
alla percezione si è sovrapposto un atto psichico superiore che ha
"rettificato" l'immagine, e questo intervento è certamente
auspicabile, altrimenti non saremmo più in grado di riconoscere gli
oggetti, in quanto la nostra percezione della forma muterebbe ad ogni nostro
movimento. Ciò che però la Psicologia della forma afferma è che questo
atto psichico superiore è inscindibile dalla "sensazione pura"
(l'immagine come appare sulla retina).
2 - I SISTEMI GRAFICI (mar 1986)
Introduzione
- Con questo secondo articolo si entra nel vivo della materia. Punto di
partenza: le periferiche grafiche. la loro importanza sta nel fatto che
senza di esse la grafica al computer non sarebbe esistita. A loro si deve la
possibilità di creare le immagini e da loro quindi si deve partire.
- Le periferiche grafiche possono essere suddivise in due grandi categorie:
periferiche di output e input, a seconda che la loro funzione sia di
visualizzare le informazioni oppure di introdurle nel computer. Non
necessariamente però queste ripartizioni - originate da considerazioni di
carattere teorico/classificativo - vengono rispettate. Si pensi per esempio
al classico terminale video grafico; verrebbe naturale considerarlo una
periferica di output, in quanto permette la creazione di disegni, ma il
fatto che sia dotato di una tastiera indica che può essere utilizzato anche
come periferica di input.
- Anzi accade talvolta che la capacità di visualizzare venga utilizzata per
integrare le funzionalità di input. E' questo il caso della funzione di
Echo: quando si introducono dei dati da tastiera, appaiono anche sul video;
questo fatto non ci deve però ingannare. Il computer - o meglio il sistema
operativo - non sta visualizzando delle informazioni richieste dall'utente
(output) ma sta facendo comparire sul video ciò che l'utente sta
introducendo (input). Ciò viene fatto per facilitare l'utilizzatore nel
controllare i dati che sta introducendo, limitando quindi le possibilità di
errore.
- Questo tipo di periferica, che racchiude sia le funzionalità di output,
che quelle di input, viene detto terminale interattivo, in quanto
permette una vera e propria interazione tra l'utente che produce i dati, ed
il computer che li fa vedere immediatamente, permettendone quindi
un'eventuale modifica diretta.
- Perciò la classificazione non fa riferimento necessariamente ad oggetti
esistenti sul mercato; si tratta più che altro di una classificazione
funzionale che permette di stabilire quali siano le funzioni che una
periferica di output (oppure di input) deve possedere. Vedremo poi che
questa bipartizione tornerà molto utile soprattutto nello sviluppo di
software grafico, permettendo di separare le primitive di output da quelle
di input.
Periferiche di output
- Le periferiche di output sono dunque dei dispositivi che permettono di
rappresentare su di un certo supporto, detto superficie di visualizzazione,
informazioni o immagini generate col computer.
- Ve ne sono di svariati tipi, e spesso il loro funzionamento si basa su
principi significativamente differenti. Possiamo comunque suddividerli in
due tipi: quelli che producono un'immagine temporanea (i cosiddetti
terminali video) e quelli che producono un'immagine permanente (periferiche
per la stampa grafica). L'immagine permanente può essere riprodotta su
diversi supporti, come per esempio la carta o la pellicola fotografica.
Terminali video
- Vi sono principalmente tre tipi di terminale grafico: i terminali stroke,
i DVST e i terminali raster. L'ordine in cui vengono elencati corrisponde
grossomodo al loro ingresso nel mondo della grafica computerizzata.
- Da ciò non deriva necessariamente che uno sia meglio dell'altro; ciascuno
è stato realizzato per risolvere problemi particolari o per integrare
funzionalità non presenti nel modello precedente, magari perché non
ritenute utili.
- Val comunque la pena vedere brevemente i principi su cui si basa il loro
funzionamento, anche perché ogni modello innovativo ha sempre tra le sue
caratteristiche quella di essere in grado di simulare tutte le funzionalità
dei suoi predecessori.
- Terminali Stroke: i vettori vengono rappresentati dalle coordinate dei
loro estremi e dalle istruzioni per la visualizzazione. Queste istruzioni
vengono utilizzate per deflettere un fascio di elettroni generato da un
emettitore, che così illumina alcune porzioni della superficie. Un vettore
può essere mosso o ruotato molto velocemente, semplicemente ricalcolando le
coordinate degli estremi. Inoltre si possono ottenere risoluzioni molto
elevate (è comune avere risoluzioni dell'ordine 409x4096). Il costo di
questi terminali è elevato, soprattutto per i circuiti di deflessione.
- Altri svantaggi sono che risulta complicato rappresentare superfici e che
il terminale risulta sensibile alla complessità dell'immagine. Poiché il
fosforo utilizzato è a bassa persistenza, l'immagine deve essere
continuamente ripristinata e più linee sono presenti più lenta sarà
questa operazione.
- Terminali DVST: questi terminali (Direct View Storage Tube) sono stati
sviluppati per ovviare ai problemi del rintracciamento di immagini
complesse. La differenza principale rispetto ai terminali Stroke sta
nell'utilizzare un fosforo ad alta persistenza, che non obbliga quindi il
refresh dell'immagine. Lo svantaggio sta però nel non permettere la
cancellazione selettiva di parti dell'immagine, se non ritracciandole
completamente. Perciò questi terminali non possono essere utilizzati nella
grafica di tipo interattivo.
- Terminali Raster Scan: in questi terminali l'immagine non è più composta
da coordinate di vettori, ma da una matrice X-Y di pixels (o picture
elements) memorizzati in una particolare area detta frame-buffer.
- L'immagine viene ripristinata, una linea alla volta. Il principale
vantaggio sta nel fatto che la velocità di refresh è indipendente dalla
complessità dell'immagine. Il successo di questi terminali dipende
principalmente dalla diminuzione dei costi delle memorie - il frame-buffer
fa parte infatti del terminale e contiene l'immagine - e la loro diffusione
è ormai assodata, basti pensare a personal e home computers.
- D'altra parte i terminali di tipo Stroke hanno l'indubbio vantaggio di
essere più vicini al modello geometrico delle immagini da rappresentare.
Vedono cioè l'immagine composta da vettori geometrici. Per questo motivo i
più recenti terminali raster uniscono le capacità e la flessibilità del
frame-buffer con la facilità d'uso dei terminali stroke; sono cioè dotati
al loro interno di uno Scan-Converter che permette la traduzione di un
vettore geometrico, espresso come coppia dio coordinate (i due estremi) in
un insieme di pixels.
- Vi sono naturalmente altre tecnologie per la visualizzazione temporanea di
immagini, alcune in fase di sperimentazione, altre già in commercio; la
loro diffusione, però, rimane ancora relativamente limitata, anche se in
via di espansione. Tra queste vanno ricordate le tecnologie flat-panel, che
permettono di realizzare video piatti, riducendo quindi sia l'ingombro che
il consumo di energia. Terminali che utilizzano il flat-panel sono quelli a
cristalli liquidi, quelli elettroluminescenti, quelli a LED e quelli a
plasma.
- Sono stati costruiti anche dei CRT piatti, ma il problema principale
legato alla realizzazione di terminali di questo tipo sta nella difficoltà
- dovuta al consumo elevato di energia - di flettere il fascio di elettroni
ad angoli molto grandi.
Tecnologie per la stampa grafica
- Vediamo rapidamente (si rischia un elenco tedioso) le principali
tecnologie utilizzate per "stampare" i disegni generati con il
computer.
- Impatto elettromeccanico: il più diffuso è senz'altro il Plotter che
utilizza dei pennini per rappresentare il disegno. Cambiando i pennini si
possono variare il colore e lo spessore della linea, ma non si possono
rappresentare colori intermedi (come differenti livelli di grigio).
- Elettrofotografico: un raggio di luce espone un mezzo fotosensibile, che
viene successivamente sviluppato. Le periferiche più diffuse sono le
stampanti laser.
- Elettro-ottiche: si utilizza un'apposita macchina fotografica che
fotografa il disegno visualizzato su un terminale. Queste apparecchiature
vengono impiegate principalmente per generare diapositive, utilizzate poi in
presentazioni o seminari. E' grazie a questi dispositivi che l'"era dei
lucidi e delle lavagne luminose" sta tramontando.
- Elettrostatiche: la tecnica è simile a quella impiegati dai dispositivi
elettrofotografici, con l'unica differenza che non si usa la luce, ma dei
fili che hanno alle estremità degli elettrodi utilizzati per appoggiare
delle cariche elettriche su della carta speciale (dielettrica), che viene
poi passata attraverso un toner. Il toner viene attratto dalle zone caricate
elettricamente e si fonde con la carta.
- Termiche: sono simili alle elettrostatiche solo che i fili non utilizzano
degli elettrodi, ma riscaldano una carta sensibile termicamente. Il calore
rompe delle microcapsule presenti sulla carta che fanno fuoriuscire un
liquido che genera l'informazione grafica.
- A impatto dot-matrix: l'impatto è molto simile ai due precedenti, ma i
fili sono dei piccoli martelletti che premono leggermente (come nella
macchina da scrivere) su di un nastro inchiostrato. Cambiando il colore del
nastro, si cambia il colore dell'immagine rappresentata.
- A getto di inchiostro: l'approccio è simile ai tre precedenti, solo che i
fili emettono delle goccioline di inchiostro che vengono gettate sulla carta
utilizzando un campo elettrico.
Periferiche in input
- La tastiera del terminale, periferica di input per antonomasia, non è
riuscita a stare al passo con le evoluzioni tecnologiche della Computer
Graphics. La sua capacità di introdurre rapidamente nel computer
informazioni di tipo testuale si è rivelata di scarso utilizzo in
applicazioni di tipo grafico interattivo, dove si richiede la possibilità
di selezionare oggetti rappresentati sul terminale - per esempio indicandoli
-, oppure di muoverli da un punto all'altro dello schermo.
- Infatti il "Pointing" (indicare un oggetto) ed il "Positioning"
(posizionare un oggetto facendolo muovere) costituiscono i tipi base
dell'interazione grafica; devono quindi avere a disposizione degli strumenti
"ad hoc". Vi sono stati dei tentativi di estendere le funzionalità
della tastiera; per esempio Hewlett-Packard ha dotato alcune tastiere di una
rotella piatta, detta Knob, che permette di spostare rapidamente il cursore
sul video in due direzioni, una opposta all'altra. Si tratta comunque di uno
strumento inadeguato per applicazioni di grafica interattiva.
- La più classica periferica di input è la penna ottica (light pen). Viene
utilizzata direttamente sul video ed è composta da una fotocellula e da un
sistema ottico, il tutto racchiuso in un involucro a forma di penna (per
poter essere utilizzato con facilità), un cavo di collegamento con il
computer ed un pulsante per comunicare la selezione.
- La penna ottica viene posizionata sull'oggetto da selezionare, si preme il
pulsante, la luce dell'immagine entra nella penna, viene amplificata, passa
per la fotocellula, la quale manda al computer un segnale.
- Con questo segnale è possibile risalire all'oggetto selezionato. La penna
ottica, pur essendo economica, è recentemente caduta in disuso soprattutto
perché poco ergonomica. Obbliga infatti il suo utilizzatore a tenere il
braccio sollevato dalla scrivania, tendendo quindi ad affaticare chi ne fa
un uso frequente.
- Il Mouse, invece, risolve questo problema. E' composto da una piccola
scatola con uno o più pulsanti e un cavo di collegamento al computer. Viene
usato facendolo muovere su una superficie piana (per esempio una scrivania),
in una posizione quindi comoda. Ve ne sono sostanzialmente due tipi: quello
meccanico, che si utilizza su una qualsiasi superficie liscia, e quello
ottico, che ha bisogno invece di una particolare lastra metallica - dove
sono tracciate delle righe di riferimento - per registrare il movimento.
- Il problema principale legato a questo tipo di periferica (ve ne sono
tanti tipi che funzionano secondo lo stesso principio logico) come per
esempio Joystick, Tracker Ball, Tablet, è che richiede del software
aggiuntivo che realizzi il cosiddetto Visual Feedback: alla periferica viene
associato sul video un simbolo (per esempio una piccola croce, oppure una
freccina), che indica all'operatore la posizione correntemente
"puntata" dal Mouse. Ogniqualvolta viene spostato, il Mouse manda
al computer le coordinate della nuova posizione (in forma assoluta o
relativa). sarà quindi compito del software aggiornare sul video la
posizione del simbolo, coerentemente con lo spostamento effettuato. Il
Visual Feedback è molto utile perché informa sempre l'utilizzatore su ciò
che sta facendo, riducendo al minimo le operazioni indesiderate.
Architetture grafiche speciali
- Per concludere questa breve rassegna sulle periferiche utilizzate dalla
Computer Graphics, è necessario volgere per un momento lo sguardo alle
nuove tendenze.
- L'evoluzione delle tecnologie grafiche, in particolare l'avvento della
raster graphics, ha fornito nuovi e potentissimi strumenti per la
rappresentazione grafica di oggetti con l'ausilio del computer. L'utilizzo
della tecnica Wire-Frame, che per molto tempo è stato il simbolo delle
immagini generate da computer, tende a scomparire in favore di metodi
rappresentativi molto più realistici. Viene usato il colore, si generano
gli effetti di ombreggiatura e si riesce persino a simulare l'aspetto
esteriore dell'oggetto facendolo sembrare ora di plastica, ora di ferro, ora
di vetro.
- Questa aggiunta di realismo nella rappresentazione dell'immagine si deve
soprattutto allo sviluppo di speciali architetture. Il principale problema
da risolvere è il tempo per la cosiddetta Scan-Conversion, e cioè il
passaggio dal modello tridimensionale dell'oggetto ad una sua
rappresentazione di un terminale raster (cioè ad un insieme di pixels).
Questa operazione richiede moltissime risorse di calcolo. Per ovviare a
questo problema sono state sviluppate speciali architetture di tipo sia
parallelo che a pipe-line e sono stati sviluppati nuovi algoritmi che ben si
adattano alle nuove architetture.
- La maggior parte di questi sistemi esplorano il parallelismo offerto
dall'algoritmo Z-Buffer, utilizzato per la rimozione delle linee nascoste.
Questo algoritmo si presta infatti molto bene ad una parallelizzazione, in
quanto è costituito da una serie di operazioni molto semplici e ripetitive,
che si applicano a piccole parti dell'immagine (i pixels). La difficoltà
sta però nel fatto che nella "versione parallela" di questo
algoritmo non si possono introdurre operazioni addizionali, come l'antialiasing
o lo shadowing, fondamentali per una rappresentazione realistica
dell'oggetto.
- Un'altra tecnica utilizzata per aumentare la velocità di calcolo - e di
conseguenza di generazione dell'immagine - è il cosiddetto Pipelining. In
questo caso alcune operazioni eseguite dal sistema vengono sovrapposte
temporalmente migliorando la resa complessiva (il cosiddetto throughput) del
sistema. Un tipico esempio di pipeline viene applicato in alcuni elaboratori
di uso generale, in cui mentre la cpu sta eseguendo un'istruzione, è già
disponibile la prossima istruzione, è già disponibile da eseguire. In
questo modo il cosiddetto "ciclo di fetch" di un'istruzione
non è più rigidamente sequenziale, ma ha delle sovrapposizioni temporali.
Pietre miliari nella storia della Computer Graphics
- 1952 - Primo video collegato ad un calcolatore (il Whirlwind del MIT) per
produrre semplici disegni.
- 1962 - La tesi di Ph.D. di Ivan Sutherland (Sketchpad - A man-machine
graphical communication system) pone i fondamenti per la grafica
interattiva.
- 1967 - Steve Coons sviluppa il primo algoritmo per la costruzione di
superfici sculturate.
- 1967 - La Tektronix lancia sul mercato il monitor grafico 611, un
terminale DVST a 11 pollici.
- 1968 - I plotter CalComp, dotati di routine chiamabile da Fortran,
stabiliscono uno standard grafico de facto. Esce il terminale T4002 della
Tektronix, con un costo di 8.000 dollari (un quinto del costo di sistemi
simili).
- 1970 - I sistemi operativi Time-sharing forniscono potenza di calcolo a
basso costo.
- 1974 - Prima conferenza all'ACM Siggraph (gruppo speciale di interesse
sulla grafica).
- 1980 - Inizia l'era dei Personal Computer.
La Look-up Table
- La Look-up Table o "Tavolozza di colori" è una tecnica usata
nei più recenti terminali grafici per estendere il numero di colori
rappresentabili. Merito principale è quello di migliorare il rapporto
costo/prestazioni nella rappresentazione di immagini colorate. Nei video
tradizionali, ad ogni pixel (picture element) del video corrispondono un
certo numero di bit; il l oro numero determina il numero massimo di
colori differenti utilizzabili. Se per esempio si dispone di 8 bit per ogni
pixel, si possono rappresentare al più 256 (28) colori ed il
valore di questi 8 bit corrisponderà ad un'opportuna combinazione dei 3
colori fondamentali, per generare il colore voluto. Utilizzando la Look-up
Table, invece, il valore di quei bit corrisponde ad un indirizzo che punta
ad una tabella (la Look-up Table appunto) che contiene le combinazioni dei
tre colori fondamentali.
- Il vantaggio di avere introdotto questo secondo livello di indirizzamento
sta nel potere avere a disposizione molto più di 256 colori. In questo caso
il numero massimo di colori rappresentabili dipenderà esclusivamente
dalla dimensione della tavolozza.
- Però con 8 bit si possono indirizzare al massimo 256 elementi, per cui
sul video potranno essere presenti sempre al massimo 256 colori
contemporanei, scelti però da una tavolozza che ne contiene molti di più.
Questo spiega affermazioni del tipo "128 colori contemporanei scelti
fra 1.000.000", sempre più frequenti sulle schede che accompagnano i
terminali grafici.
- Se vorremo utilizzare un nuovo colore non presente tra i 256 correntemente
utilizzati, dovremo sceglierlo nella tavolozza e sostituire il suo indice
con uno degli indici utilizzati precedentemente. In questo modo tutti gli
oggetti presenti sul video col vecchio colore, verranno immediatamente
"dipinti" col nuovo colore. Questo mutamento è istantaneo, tanto
è che sono state sviluppate delle tecniche di animazione che utilizzano la
Look-up Table (per esempio per simulare lo scorrere di un ruscello).
Funzionamento di un CRT
- Il Tubo a Raggi Catodici (CRT) è sostanzialmente un oggetto di vetro a
forma di bottiglia con del fosforo all'estremità più allargata (la
superficie di visualizzazione) ed una sorgente di elettroni - detta Electron
Gun - nella parte più stretta.
- Il fosforo, colpito da un fascio di elettroni, libera radiazioni luminose.
In questo modo la combinazione di zone illuminate sulla superficie di
visualizzazione genera l'immagine.
- L'Electron Gun utilizza dei campi elettrostatici per mettere a fuoco ed
accelerare gli elettroni, generati da un catodo composto da filamenti
elettrici. Il catodo è circondato da un involucro metallico, detto Griglia
di Controllo (Control Grid), con un foro nell'estremità rivolta verso il
fosforo. Poiché questo involucro è tenuto ad un potenziale inferiore a
quello del catodo, gli elettroni vengono attratti all'esterno e fuoriescono
dal foro. Variando il potenziale della Griglia di Controllo, si può
controllare la velocità del flusso di elettroni - e di conseguenza la
"brightness" dell'immagine generata.
- Una volta fuori dall'involucro, gli elettroni entrano in un'altra
struttura metallica, che ha lo scopo di accelerare ulteriormente il fascio e
di metterlo a fuoco. Per poter generare un'immagine, si deve però poter
controllare esattamente quali punti della superficie ricoperta di fosforo
verranno eccitati dal fascio di elettroni, in modo da illuminare soltanto la
parte interessata. Perché questo accada, il fascio di elettroni deve essere
controllato con grande precisione; a questo scopo viene predisposto un
sistema di elettromagneti (detto Yoke) che permette di flettere il fascio
verso qualsiasi punto della superficie di visualizzazione.
- Poiché generalmente il fosforo utilizzato dai CRT è a bassa persistenza,
l'immagine tende a perdere luminosità molto rapidamente; per questo motivo
deve essere continuamente ripristinata, generalmente ciò accade 30 volte al
secondo. Se la frequenza di questa operazione, detta Refresh, è però
inferiore a 30 volte al secondo, l'immagine appare traballante generando
quel fenomeno noto come Flickering e dipendente dal meccanismo percettivo
dell'occhio umano.
- Nel caso dei terminali a colori, invece, il dispositivo si complica
leggermente. Viene frapposto, fra il fosforo e gli emettitori del fascio
(che adesso sono 3, uno per ogni colore fondamentale e cioè rosso, verde e
blu), una lastra di metallo, detta Shadow Mask, con dei piccoli buchi
rotondi, raggruppati a tre a tre. Il sistema di deflessione fa muovere
solidamente i tre emettitori, in modo che in ogni punto dello schermo
ciascun emettitore "punti" ad uno dei tre fori. Sotto di questi vi
sarà del fosforo del colore corrispondente a quello controllato
dall'emettitore. In questo modo è possibile rappresentare un colore come
combinazione di tre pigmenti colorati, ciascuno con una certa intensità.
3 - IL SOFTWARE GRAFICO (apr 1986)
Introduzione
- Scopo di un linguaggio grafico è di mettere a disposizione dell'utente
delle funzioni che gli permettano di eseguire un certo numero di operazioni,
come tracciare linee, cerchi, quadrati, ingrandire parti del disegno,
cancellare, colorare.
- Queste funzioni devono avere cioè una stretta analogia con le principali
operazioni eseguite da un disegnatore. La differenza con gli usuali
linguaggi di programmazione sta quindi nel fatto che l'elaborazione dipende
strettamente dal tipo di periferica grafica utilizzata. Può accadere che
uno steso programma, se utilizzato con differenti periferiche, ottenga
diversi risultati.
- Alla base di ciò esistono dei concetti la cui comprensione è necessaria
per chiunque desideri "disegnare" col computer.
- In questo articolo ci proponiamo perciò di analizzare questi concetti,
con lo scopo non tanto di sviscerare tecnicamente le componenti di un
linguaggio grafico, ma piuttosto di dare una visione complessiva dei suoi
elementi costitutivi. In questo ambito un pò di formalismo matematico è
necessario.
- Vedremo poi negli articoli successivi alcuni esempi di linguaggi grafici,
in modo da poterne valutare differenze e analogie.
- Il primo concetto da affrontare è il Sistema di Riferimento. Quando noi
vogliamo rappresentare un oggetto su di un foglio di carta, rispondiamo
implicitamente ad una serie di domande, come per esempio "in che scala
raffigurare l'oggetto?" oppure "in che punto del foglio
disegnarlo?". Questi quesiti rimandano al concetto di Sistema di
Riferimento. Esso ci permette di scegliere dove (sulla superficie di
visualizzazione) raffigurare l'oggetto. Questo discorso si estende
naturalmente alle periferiche grafiche. Esse sono dotate di un sistema di
riferimento che permette all'utilizzatore di scegliere in maniera esatta
dove collocare l'oggetto da raffigurare. Non solo, ma se si decidesse, una
volta effettuato il disegno, di "spostarlo", l'operazione verrebbe
condotta in maniera molto semplice, senza dovere "manualmente"
rigenerare il disegno.
- Ciò dipende dal fatto che ogni parte del disegno è stata espressa sotto
forma di entità geometriche (punto, linea, superficie, solido) e perciò
dotata di coordinate che indicano la posizione di ciascuna entità in un
particolare spazio geometrico.
Window e Viewport
- Nei linguaggi grafici più diffusi, sono presenti due funzioni, il cui
scopo è quello di semplificare al massimo le operazioni di scelta del
sistema di riferimento e di posizionamento del disegno sulla superficie di
visualizzazione.
- Set Viewport (x1, y1, x2, y2)
- Set Window (wx1, wy1, wx2, wy2)
- Per Window si intende quella parte del modello che è stata scelta per la
rappresentazione. Se per esempio si è scelto di disegnare una sinusoide, si
deve stabilire che parte raffigurare, essendo questa una funzione periodica
definita su tutto l'asse reale. La window definirà che intervallo della
sinusoide dovrà essere rappresentato.
- La window ha anche un'altra importante applicazione: lo zoom. Se vogliamo
ingrandire un particolare del disegno appena rappresentato, non dobbiamo
modificare il programma che lo genera, dovremo semplicemente modificare i
parametri della window, rimpicciolendola. Poiché il disegno occuperà
sempre la stessa porzione dello schermo, il disegno risulterà ingrandito.
- La Viewport è invece quella parte della superficie di visualizzazione
dove apparirà il disegno. Normalmente il disegno occupa tutto lo schermo,
ma tramite il concetto di viewport è possibile fare coesistere sulla stessa
superficie più disegni non sovrapposti.
- Entrambe queste regioni sono rettangolari e verranno perciò definite da
quattro numeri. Le funzioni "Set Window" e "Set Viewport"
sono il modo con cui l'utente stabilisce la window e la viewport. Entrambe
queste funzioni avranno come parametri quattro numero; nel caso della window
saranno quattro numeri reali, espressi nel sistema di riferimento del
modello, mentre nel caso della viewport saranno quattro numeri non negativi,
il cui valore massimo non potrà eccedere la risoluzione del terminale
utilizzato.
- La possibilità di stabilire che parte del disegno raffigurare e in che
punto dello schermo collocarla è comunque legata ad un'altra importante
funzione di molti sistemi grafici e cioè il cosiddetto Clipping. Si tratta
della capacità di non rappresentare parti del disegno esterne alla window
stabilita.
Trasformazioni geometriche
- Un altro strumento fondamentale nello sviluppo di applicazioni grafiche
sono le cosiddette trasformazioni, che permettono di trasformare un insieme
di punti con certe caratteristiche in un insieme con diverse
caratteristiche.
- Un esempio lo abbiamo visto. Viene detta "window to viewport mapping"
e trasforma un punto appartenente al modello da rappresentare (per esempio
0,3.1415 nel caso della sinusoide) in un punto appartenente alla superficie
di visualizzazione (per esempio 10,400). Altre trasformazioni, dette
geometriche perché realizzano operazioni di tipo geometrico, permettono
invece di far eseguire movimenti o modificare l'aspetto di immagini già
raffigurate sul terminale. Possiamo raggrupparle nel seguente modo
- tradizionali (traslazione, rotazione, riflessione)
- proiezioni
- deformazioni (scaling, torsioni, anamorfosi)
- Le trasformazioni tradizionali permettono di spostare l'oggetto
rappresentato lungo la superficie di visualizzazione, oppure di variarne
l'orientamento, senza però variarne l'aspetto o la dimensione. Le più
classiche sono la traslazione e la rotazione, alle quali se ne aggiungono
altre come per esempio la riflessione speculare.
- Un secondo gruppo di trasformazioni geometriche è costituito dalle
proiezioni. Il loro scopo è di passare da una rappresentazione a tre
dimensioni, ad una bidimensionale. Ciò deve essere fatto in quanto la
superficie di visualizzazione è tipicamente a due dimensioni, mentre la
realtà è a tre dimensioni. Vi sono molti tipi di proiezioni e sarebbe
noioso elencarle. Basti dire che si dividono principalmente in due gruppi:
- proiezioni parallele
- proiezioni prospettiche
- Nelle prime (ortografiche, assonometriche) non esistono i punti di fuga e
vengono rispettate alcune proprietà metriche, mentre nelle seconde
(centrali) il parallelismo non viene sempre rispettato. Infatti alcune linee
che normalmente sarebbero parallele, dopo questa trasformazione diventano
convergenti verso uno o più punti, detti punti di fuga (vanish point).
- Le deformazioni appartengono invece al terzo gruppo. Il loro scopo è
modificare l'aspetto dell'oggetto raffigurato. La più semplice è
certamente lo "scaling" che permette di variarne la dimensione
applicando un fattore di scala. Deformazioni più sofisticate utilizzano
invece le tecniche delle trasformazioni tradizionali, ma non vengono
applicate ad un corpo rigido. Sono cioè operazioni incrementali in cui
l'entità del movimento varia col variare dei punti. Per esempio nel caso
del twisting, si applica una rotazione a tutti i punti dell'oggetto, ma
l'angolo di rotazione non è costante, ma varia. In questo modo l'oggetto
risultante sembra attorcigliato. Altre trasformazioni, molto usate nel '600,
sono le anamorfosi. Il termine anamorfosi è stato coniato nel '600, per
designare una certa specie di "depravazione ottica" basata sui
giochi della prospettiva e della riflessione. Queste immagini sono distorte,
spesso mostruose ed indecifrabili ma, se viste da un certo punto dello
spazio o riflesse su specchi particolari (per esempio conici o cilindrici),
si ricompongono, si rettificano, svelando figure a prima vista non
percepibili.
- Tutte queste trasformazioni sono caratterizzate da delle formule
matematiche che permettono di calcolare, dato un punto, il suo trasformato.
Queste formule non sono generalmente uniche e la forma più utilizzata è
quella matriciale, che permette di gestire in maniera omogenea tutti i tipi
di trasformazione.
Matrici e trasformazioni geometriche
- Le trasformazioni geometriche sono delle entità matematiche che
permettono di variare alcune proprietà - per esempio posizione,
orientamento o dimensione - di oggetti rappresentati geometricamente.
Matematicamente possono essere espresse come sistemi di equazioni del tipo
- X' = f1 (x)
- Y' = f2 (y)
- Z' = f3 (z)
dove si mette in risalto che il nuovo punto (X', Y', Z') è stato
calcolato dal precedente (x, y, z) applicando in maniera opportuna una serie
di funzioni. Per esempio la traslazione (spostamento lungo una retta)
soddisferà le seguenti relazioni:
- X' = x + SpostX
- Y' = y + SpostY
- Z' = z + SpostZ
mentre la variazione della dimensione dell'oggetto utilizzerà le
seguenti equazioni:
- X' = x • Fattore-di-scala
- Y' = y • Fattore-di-scala
- Z' = z • Fattore-di-scala
- Esiste
comunque una maniera matematicamente più compatta per rappresentare le
trasformazioni: la Rappresentazione Matriciale. Con questo strumento
possiamo facilmente rappresentare in un'unica matrice più tipi di
trasformazioni da applicare contemporaneamente all'oggetto. Se poi vogliamo
applicare delle trasformazioni in successione, la rappresentazione
matriciale lo permette in maniera molto naturale per mezzo della
concatenazione di matrici.
- Il
loro grande vantaggio, rispetto al metodo classico, sta comunque nella loro
generalità, per cui non si deve avere una serie di equazioni per ogni tipo
di rappresentazione. L'applicazione di una trasformazione verrà sempre
realizzato moltiplicando il punto da trasformare (espresso sotto forma di
vettore) per una opportuna matrice di trasformazione, nel seguente modo:
- (X',
Y', Z') = (x, y, z) •
- • Matrice Trasformazioni
- Per comporre due trasformazioni, sarà sufficiente applicare il prodotto
matriciale:
- Nuova Matrice = Matrice 1 • Matrice 2
- In questo modo è possibile realizzare trasformazioni complesse
semplicemente concatenando trasformazioni più semplici.
Le primitive grafiche
- Fino ad adesso abbiamo visto i fondamenti matematici per realizzare un disegno su
di una periferica grafica. Non abbiamo però ancora parlato delle funzioni
che ci permettono effettivamente di disegnare. Queste funzioni vengono
generalmente chiamate primitive grafiche, in quanto permettono all'utente di
eseguire semplici disegni (punti, linee, quadrati, cerchi ...). La
costruzione di disegni più complessi dovrà quindi essere fatta utilizzando
opportunamente e combinando queste primitive.
- In questo articolo parleremo soltanto delle primitive di output, mentre
rimanderemo il discorso sulle primitive di input in un prossimo articolo,
quando si parlerà di interfaccia uomo-macchina.
- La più semplice funzione di output per una periferica grafica è senz'altro la
funzione: Set Pixel (x, y, colore) che permette di assegnare un particolare
colore al punto di coordinate (x, y). Pur nella sua semplicità, questa
funzione ci può dare subito dei problemi in quanto non è una funzione del
tutto generale. Infatti il valore del parametro colore dipenderà dal tipo
di periferica utilizzata. In un terminale monocromatico semplice, potrà
avere soltanto due valori: acceso/spento, mentre in terminali più complessi
sarà l'indice nella tabella di colori. Inoltre nei terminali a vettore non
esiste il Frame Buffer, perciò il concetto di pixel (punto grafico) non
esiste.
- Questa
considerazione non vale solo per la funzione Set Pixel, ma si applica a
tutte le primitive grafiche e permette di evidenziare uno dei principali
problemi della computer graphics: la dipendenza dalle periferiche
utilizzate. In uno dei prossimi articoli questo problema verrà affrontato
più in dettaglio: si parlerà dei tentativi di risolverlo mediante gli
standard grafici.
- Nonostante ciò è possibile parlare di primitive grafiche logiche. Si possono cioè
raggruppare in classi logiche (prescindendo da implementazioni particolari)
le funzioni grafiche presenti sulle più diffuse periferiche grafiche,
utilizzando come fattore integrante le loro funzionalità principali.
- Set Pixel (x, y, colore) o Pset (x, y, colore)
- Line (x1, y1, x2, y2) o Draw (x, y)
- Box (x, y)
- (x1, y1, x2, y2)
- Arc(xz, y, raggio, angolo)
- (x, y, raggio, rapporto)
- Fill(x, y, colore, bordo)
- Paint (x, y, colore, bordo)
- Clear o Cls
- La
prima, Set Pixel, l'abbiamo appena vista.
- In
questo elenco sono riportati dei nomi alternativi, spesso utilizzati nei
linguaggi grafici per rappresentare lo stesso tipo di funzione.
- Line
permette di tracciare una linea retta congiungente il punto (x1, y1) con il
punto (x2, y2). Spesso questa funzione si trova con una sola coppia di
parametri (per esempio Draw [x, y]). Si tratta sempre della medesima
funzione, l'unica differenza è che viene utilizzata la posizione corrente:
ogni volta che viene eseguita una primitiva di output, il sistema ricorda
l'ultima posizione in cui ha eseguito un tracciamento.
- Quindi Draw (x, y) vuol dire "traccia una linea retta che congiunge
la posizione corrente con il punto (x, y) e fai diventare (x, y) la nuova
posizione corrente". Questa convenzione non si applica solamente alla
funzione logica Line, ma a tutte le primitive che eseguono dei
tracciamenti.
- La funzione Box traccia un rettangolo con lo spigolo in basso a sinistra
coincidente con il punto (x1, y1) e quello in alto a destra col punto (x2,
y2). La tecnica per specificare il rettangolo è analoga a quella
utilizzata dalle funzioni Set Window e Set Viewport; viene cioè
specificata la posizione dello spigolo in basso a sinistra e una
diagonale. Talvolta è presente un parametro addizionale che dà la
possibilità di creare un rettangolo colorato (non solo il contorno).
- Arc
permette invece di tracciare un arco, che sottende un certo angolo. La
distanza dell'arco dal punto (x, y) (detto centro) viene regolata dal
parametro "raggio". Ovviamente se l'angolo è giro, non verrà
generato un arco, bensì una circonferenza. Si può quindi utilizzare questa
funzione per tracciare circonferenze.
- Spesso
sono però disponibili funzioni ad hoc per rappresentare circonferenze. La
loro differenza con le funzioni di tipo Arc è che forniscono un parametro
addizionale (nell'elenco indicato come rapporto) che permette di
controllare, durante la generazione della figura, il rapporto tra gli
incrementi verso x e verso y. Variando questo parametro è quindi possibile
generare, oltre che circonferenze, anche ellissi.
- La
funzione Fill permette il riempimento di aree con un certo colore o con un
certo disegno, detto pattern, che viene duplicato orizzontalmente e
verticalmente, sino a riempire completamente l'area specificata.
Generalmente questa funzione ha bisogno di un punto interno (x, y) all'area
da riempire e del colore di riempimento. E' anche necessario specificare il
colore del contorno in quanto la funzione non presuppone l'esistenza di una
particolare area. Semplicemente partendo dal punto specificato (che deve
essere interno alla figura e non sul contorno) incomincia a colorare in una
direzione, finché non trova un pixel del colore del contorno, a questo
punto cambia direzione e continua il processo. Per questo motivo l'area da
riempire deve essere completamente circondata dal contorno. Se manca anche
un solo puntino, il riempimento verrà esteso a tutta la superficie di
visualizzazione.
- Clear,
infine, permette di cancellare la superficie di visualizzazione. Ha quindi
particolare importanza in applicazioni interattive.
La
grafica tridimensionale ed il problema del realismo
- Concludiamo
questa breve rassegna dando un cenno ad un gruppo di tecniche sviluppate
recentemente per dare maggiore realismo alle immagini generate. Vengono
utilizzate prevalentemente su terminali raster in quanto si basano sulla
possibilità di colorare il singolo punto dell'immagine. Tre sono
principalmente le tecniche utilizzate: Hidden Surface Removal (rimozione
delle superfici nascoste); Shading (ombratura); Texturing (tessitura).
- Ciascuna
di esse cerca di realizzare, spesso con metodi matematici molto complessi e
"time-consuming" alcune caratteristiche del processo della
visione.
- Le
tecniche di rimozione delle linee nascoste sono forse le più diffuse. Si
propongono di eliminare dal disegno quelle parti che, in una scena reale,
non verrebbero viste dall'osservatore in quanto nascoste da oggetti non
trasparenti. Potremmo dire che simulano una proprietà di molti oggetti
reali, e cioè l'opacità ai raggi di luce.
- Tutte
si basano su di una sorta di ordinamento che permette di stabilire, dato un
gruppo di oggetti presenti sulla stessa linea visiva, quale è il più
vicino all'osservatore (e quindi visibile).
- Il
primo di questi algoritmi, sviluppato agli inizi degli anni '60, funzionava
esclusivamente su terminali a vettore. Su questi terminali gli oggetti
venivano raffigurati come maglie di linee (mesh), per cui il compito
principale di questo algoritmo era la individuazione delle linee nascoste.
Quando i terminali raster incominciarono ad essere disponibili a costi
ragionevoli, l'attenzione si spostò invece sulla rimozione delle superfici
nascoste. Qualunque terminale si utilizzi, non esiste però un unico
algoritmo che risolva il problema della eliminazione in maniera efficiente.
Le principali differenze tra i metodi correntemente utilizzati nascono dalle
diverse applicazioni in cui vengono impiegati.
- Le
tecniche di shading cercano invece di rappresentare un modello di
illuminazione e quindi di calcolare zone luminose e zone ombreggiate nel
disegno. Utilizzando delle sorgenti luminose, si riesce a dare un notevole
realismo al disegno in quanto si toglie quella caratteristica che hanno
molte immagini sintetiche generate col computer, e cioè l'illuminazione
diffusa su tutta la scena rappresentata, senza quindi ombre.
- Il
texturing, infine, cerca di dare una parvenza di realtà alle superfici
generate assodando una tessitura che, "incollata" alla superficie,
permetta di rappresentare fenomeni come onde del mare, nuvole, montagne.
Matematicamente la tessitura (o trama) di una superficie può essere
definita come una funzione intensità (x, y), che associa ad ogni punto (x,
y) appartenente alla superficie un valore di intensità. Il problema è
quindi trovare particolari funzioni che rappresentino in maniera realistica
situazioni naturali.
- Vi
sono altre tecniche, alcune molto recenti, che aggiungono contributi alla
rappresentazione del realismo. Tra queste si può ricordare il Ray Tracing,
che permette di realizzare immagini altamente realistiche cancellando la
riflessione, la rifrazione e la trasparenza negli oggetti. Le tecniche
stocastiche (Frattali, Moto Browniano) che simulano movimenti complessi (un
prato mosso dal vento) o realizzano immagini complesse (una costa molto
frastagliata).
- Le
Strutture Grafiche Gerarchiche, che permettono di modellare il movimento
umano analizzando regole come "se si muove il braccio, allora si muove
anche la mano, ma non viceversa". Infine l'Antialiasing che permette di
ridurre le "scalettature" generate dai terminali raster.
Lo
Shading
- La
tecnica dello Shading (ombratura) contribuisce sensibilmente alla formazione
di immagini realistiche su di un dispositivo grafico di tipo raster. Una
volta che le parti visibili del disegno sono state identificate da un
algoritmo per la rimozione delle superfici nascoste, si deve usare uno
"shading model" per calcolare l'intensità e i colori da
utilizzare per rappresentarle sul terminale video.
- Lo
shading non simula esattamente il comportamento di luci e superfici nel
mondo reale, ma ne approssima le condizioni; il disegno di un modello è
sempre un compromesso tra precisione e costo computazionale. In questo caso
il trade-off è dato in particolare dalla proprietà del sistema visivo
umano, che tende ad influenzare la percezione del realismo.
- Il
modello di shading ha due ingredienti principali: le proprietà della
superficie e quelle della luce che cade sulla superficie.
- La
principale proprietà della superficie è il Potere riflettente, che
determina quanto della luce incidente viene riflesso. In particolare se una
superficie ha diversi poteri riflettenti per luci di differenti lunghezze
d'onda, essa apparirà colorata. Un'altra importante proprietà, legata alla
superficie in esame, è la trasparenza.
- Nel
caso della luce, invece, sono particolarmente importanti l'intensità e il
tipo di sorgente luminosa (puntiforme oppure illuminazione diffusa).
- Vediamo
ora un semplice modello di shading con illuminazione diffusa. Esso deve
permettere di determinare lo "shade" di un punto sulla superficie
in termini di un certo numero di attributi. Solitamente si usa
la seguente formula: E (p) = R (p) • 1 che indica che l'energia luminosa proveniente
dal punto p (e cioè E (p)) e dovuta all'illuminazione diffusa, è data dal
prodotto di due fattori: l'illuminazione diffusa che cade su tutta la scena
(1) e il potere riflettente in p (R (p)).
- Se si vogliono modellare superfici colorate, bisogna valutare separatamente le
tre componenti principali del sistema di colore:
- E (p, rosso) = R (p, rosso) • 1 (rosso)
- E (p, verde) = (p, verde) • 1 (verde)
- E (p, blu) = (p, blu) • 1 (blu)
- Queste tre relazioni possono ovviamente essere riassunte da una più composta
notazione vettoriale.
- Questo modello può essere sofisticato. Se si vuole introdurre, per esempio, una
sorgente luminosa puntiforme, bisognerà utilizzare la legge di Lambert, che
afferma che "l'energia sprigionata da una sorgente puntiforme che cade
su una superficie varia con il coseno dell'angolo di incidenza".
- In
questo caso la relazione sarà (per il caso monocromatico): E (p) = [R (p) • cos (ang)]
• 1 (p) dove "ang" è l'angolo di incidenza tra la normale alla superficie ed il raggio luminoso.
4 - I LINGUAGGI GRAFICI (giu 1986)
Introduzione
- Questo articolo si propone di analizzare i linguaggi grafici più diffusi
sul mercato ricercandone analogie e differenze. Data la loro grande varietà,
ho ristretto il campo di osservazione alle cosiddette macchine "general-purpose",
cioè ai computer di uso generale non programmati per una particolare
applicazione.
- Accennerò solo brevemente ai linguaggi per i computer "special-purpose"
data la loro estrema specificità.
- Va però anche detto che la separazione tra computer specializzati e
computer di uso generale si sta sempre più assottigliando, grazie
soprattutto alla rapidissima evoluzione tecnologica che consente di ridurre
sempre più drasticamente il rapporto costi/prestazioni. Ciò permette di
avere a disposizione, con poche decine di milioni, computer di uso generale
(supermini) che, se programmati in maniera opportuna, possono esibire
prestazioni di tipo grafico sicuramente paragonabili a calcolatori dedicati,
di costo molto superiore.
- Dopo aver introdotto le due tipologie della grafica al calcolatore,
grafica strutturata e elaborazione numerica delle immagini, vengono
analizzati i linguaggi grafici disponibili su calcolatori programmabili di
piccola e media dimensione. Per facilitarne il confronto, viene utilizzata
una classificazione che fa riferimento al rapporto fra il linguaggio grafico
e l'ambiente software che lo ospita.
- Concluderà questo articolo una rapida descrizione di un linguaggio
grafico molto diffuso su personal computer, il GW-Basic, che permetterà di
analizzare concretamente le caratteristiche di un linguaggio grafico,
vedendo in particolare le sue funzionalità rapportate con gli algoritmi
grafici analizzati nel precedente articolo sul software grafico.
Grafica strutturata ed elaborazione delle immagini
- Nel precedente articolo ci eravamo occupati delle principali
caratteristiche che un linguaggio grafico deve posseder, soffermandoci in
maniera particolare sui concetti di trasformazione e rappresentazione
realistica. Entrambe queste tecniche facevano riferimento ad un modello
geometrico. Detto in altri termini, per poter rappresentare in maniera
realistica un oggetto (per esempio rimuovendo le parti non visibili, oppure
simulando un'illuminazione sulla sua superficie) oppure per eseguire delle
trasformazioni (ruotarlo, ingrandirlo, deformarlo) era necessario che
l'oggetto fosse descritto utilizzando un modello geometrico; che venisse cioè
visto come composto di parti (per esempio superfici) composte in un certo
modo e descritte da particolari equazioni. In questo modo era possibile
eseguire le trasformazioni agendo sulla definizione matematica di ogni
singola parte. Per questo motivo questo tipo di immagini viene comunemente
detta "strutturata".
- Esiste però un'altra classe di immagini, ugualmente manipolabile dai
computer, che però non è dotata di struttura ed assomiglia più ad una
foto che ad un modello geometrico. Questa differente rappresentazione viene
detta a "Mappe di Bit" (in inglese Bit Map), in quanto l'immagine
è composta da un insieme di bit, ciascuno con un particolare colore o
livello di grigio. Questo tipo di rappresentazione è sempre più diffusa;
si pensi per esempio alle immagini provenienti dai satelliti che vengono
rielaborate dal computer, oppure alle nuove tecniche non invasive per le
indagini mediche, come la TAC (Tomografia Assiale Computerizzata) oppure l'RMN
(Risonanza Magnetica Nucleare). Si tratta sostanzialmente del matrimonio fra
le tecniche fotografiche classiche e le capacità di manipolazione del
computer.
- Prendiamo per esempio il caso della TAC. Viene spesso chiamata Radiografia
Computerizzata e non a torto. Si tratta infatti di una radiografia classica
(e perciò si potrebbe contestare l'attributo di non-invasività, visto che
i raggi X non fanno certo bene) con però la significativa differenza che la
radiografia non viene prodotta su lastra ma viene memorizzata, mediante un
calcolatore, sotto forma di mappa di bit.
- L'immagine così generata è in bianco e nero ed è stata prodotta
associando ad ogni pixel un valore corrispondente al grado di assorbimento
dei raggi X. Perciò un pixel bianco corrisponderà alla trasparenza
rispetto ai raggi (aria), un pixel nero corrisponderà ad un assorbimento
totale (ad es. una protesi metallica) e le tonalità intermedie di grigio
corrisponderanno ad un particolare livello di assorbimento.
- L'enorme vantaggio derivato dal possedere la radiografia sotto forma
digitale si manifesta nel poter manipolare l'immagine. E' possibile per
esempio ingrandire particolari dell'immagine (e ciò acquista una
particolare importanza se la risoluzione di campionamento è molto maggiore
della risoluzione del video che visualizza l'immagine) oppure eseguire
riconoscimenti automatici (per esempio riconoscere automaticamente una
neoplasia). Altre operazioni che possono essere eseguite su immagini sotto
forma digitale sono per esempio le cosiddette "pulizie"
(eliminazione del rumore di fondo, evidenziazione dei contorni, utilizzo dei
falsi colori per aumentare il contrasto fra i particolari). Una delle
tendenze più recenti è la ricostruzione in tre dimensioni di immagini
bidimensionali provenienti da apparecchiature TAC o NMR.
- Perciò le operazioni che vengono effettuate su immagini a mappe di bit
differiscono sensibilmente da quelle applicabili ad immagini strutturate.
Anche quelle che sembrerebbero simili sono in effetti molto diverse. Per
esempio l'ingrandimento di un'immagine, nel caso strutturato si risolve in
una modifica della Window, mentre con le mappe di bit viene realizzato per
esempio utilizzando la "Bit Duplication" lungo l'asse X e l'asse
Y. Anche il riconoscimento automatico di forme all'interno di un'immagine
non utilizza proprietà geometriche nel senso più usuale.
Tipi di linguaggi grafici
- Come sempre quando si deve analizzare un fenomeno, si cerca di
classificare i suoi componenti mediante analogie, in modo da creare delle
"classi di equivalenza" che contengano oggetti simili per qualche
proprietà. Questa operazione non sempre è facile e soprattutto non risulta
univoca. Nel caso dei linguaggi grafici questa affermazione è
particolarmente vera.
- Comunque sia una certa classificazione dà sempre delle indicazioni su
come orientarsi.
- Il criterio da me adottato è il rapporto tra i linguaggi grafici e il
linguaggi generali (gli usuali linguaggi di programmazione come Basic,
Cobol, Fortran, Pascal ...). Si possono quindi identificare tre tipi di
linguaggi grafici
- Linguaggi inerentemente grafici
- Linguaggi come estensione di linguaggi generali
- Linguaggi come librerie di sottoprogrammi
- Per ciascuno di questi tipi analizzeremo le caratteristiche principali e
ci soffermeremo su qualche linguaggio reperibile sul mercato.
Linguaggi inerentemente grafici
- Per linguaggi inerentemente grafici intendo linguaggi sviluppati per
applicazioni tipicamente grafiche, come il tracciamento di figure, ma
utilizzabili su computer non "special-purpose". Uno dei più
interessanti - e anche dei più curiosi per le sue implicazioni con la
pedagogia - è il Logo, nato alla fine degli anni Sessanta presso il
Laboratorio di Intelligenza Artificiale del Massachussetts Institute of
Technology (MIT) da una felice intuizione di Seymour Papert.
- L'idea di base è di utilizzare il calcolatore in un modo alternativo,
superando gli aspetti puramente strumentali per approfondire "quello
che l'elaboratore può apportare ai processi mentali, esercitando la sua
influenza sui nostri modi di pensare ...".
- Originariamente era stato pensato per facilitare l'insegnamento
dell'informatica (in particolare l'approccio al calcolatore) ai
giovanissimi. Utilizza, per il tracciamento, il concetto di posizione
corrente, rappresentato simbolicamente da una tartaruga, che deve essere
guidata dal programma e che muovendosi può lasciare una traccia che
rappresenta il disegno.
- Il concetto di tartaruga fu usato per la prima volta da un neurofisiologo
inglese, Grey Wlater, che costruì agli inizi degli anni '60 dei piccoli
robot, chiamai appunto "Tortoises".
- Questi oggetti ispirarono a loro volta le prime "tartarughe
meccaniche" costruite al MIT e cioè dei robot controllati da computer
che si muovono lungo il pavimento e rispondono, eseguendoli, ad alcuni
semplicissimi comandi del tipo:
- FORWARD x:
vai avanti di "x" passi
- BACKWARD x: vai
indietro di "x" passi
- LEFT x:
gira a sinistra di "x" gradi
- RIGHT x:
gira a destra di "x" gradi
- PENUP:
non lasciare una traccia sul pavimento
- PENDOWN:
lascia una traccia sul pavimento
- Il passo di sostituire questo oggetto meccanico con una più flessibile ed
economica simulazione sullo schermo di calcolatore è stato breve, e così
è nato Logo.
- In questo caso la tartaruga è rappresentata da un cursore a forma di
triangolo isoscele ed è definita da uno stato, composto dalle seguenti
informazioni (rappresentate come variabili globali all'interno del
linguaggio):
- posizione corrente
- direzione corrente di movimento
- utilizzo della penna (PenUp e PenDown)
- In questo modo un generico comando alla tartaruga può essere espresso in
termini di variazione del suo stato. Introducendo poi la possibilità di
racchiudere insieme, mediante la creazione di procedure, gruppi di comandi e
permettendo la definizione ricorsiva dei comandi, si è in grado di far
eseguire alla tartaruga cammini (e cioè disegni) complessi, pur utilizzando
un insieme di comandi piuttosto semplici. Si vedano per esempio le figure 4
e 5 che rappresentano l'esecuzione dei seguenti programmi Logo:
- TO POLYSPI: lato: angolo
- FORWARD: lato
- RIGHT: angolo
- POLYSPI (: lato+1): angolo
- TO INSPI: lato: angolo: incremento
- FORWARD: lato
- RIGHT: angolo
- INSPI: lato (: angolo+: incremento) :
incremento
- E' curioso notare come queste due semplici procedure (dove la parola TO
indica la definizione della procedura ed entrambe sono ricorsive) si
assomigliano molto, eppure generano risultati piuttosto diversi. Anzi,
ciascuna di esse produce grosse variazioni nel disegno generato, a fronte di
piccole variazioni nei parametri da esse utilizzati (per esempio angolo o
incremento).
- Logo è attualmente utilizzabile su molti personal e home computer (Apple
II, Commodore 64, PC Ibm ...).
- C'è un'altra classe di linguaggi inerentemente grafici che sta
recentemente diffondendosi, e che ha come "cavallo di battaglia"
l'utilizzo della cosiddetta "Interfaccia iconica", e cioè di un
nuovo modo di dialogare con il computer che rinuncia alla mediazione
testuale, impiegando massicciamente immagini e pointing-device (come mouse,
tablet e joystick).
- Capostipite è il linguaggio Smalltalk, sviluppato alla fine degli
anni '70 al Parc (Xerox Palo Alto Research Center), un vero e proprio
linguaggio con primitive grafiche per la gestione delle icone (mappe di bit
rappresentanti singoli oggetti come stampanti, dischi, programmi).
Recentemente sono state sviluppate versioni di interfacce iconiche creando
librerie di sottoprogrammi utilizzabili dai tradizionali linguaggi di
programmazione. Tra queste si ricorda il sistema operativo di Lisa e di
Macintosh della Apple, oppure Gem della Digital Research.
Linguaggi come estensione di linguaggi generali
- A questa seconda classe appartengono quei linguaggi grafici nati come
estensione di linguaggi generali. La loro diffusione è principalmente sui
personal e home computer ed il linguaggio più volte "esteso" è
senza dubbio il Basic, probabilmente per la sua diffusione. Le estensioni
possono essere fatte in due modi: nel primo il linguaggio non viene
apparentemente esteso. Non vengono cioè introdotte nuove istruzioni o nuove
funzioni. Si utilizzano però massicciamente due funzioni Basic che
permettono di leggere e modificare qualsiasi valore che abbia un indirizzo.
- Queste funzioni sono:
- PEEK (indirizzo)
- POKE (indirizzo), byte
la prima ritorna il contenuto (un byte) dell'indirizzo, mentre la seconda
mette "byte" nell'indirizzo. E' con questi tipi di funzioni che in
computer come il VIC 20 della Commodore si realizzano programmi grafici. Sui
manuali sono ovviamente rese note le mappe di memoria che riportano per
esempio dove viene gestito il colore, oppure dove è collocato il frame-buffer,
oppure ancora a che indirizzo corrisponde il processore grafico.
- Nel secondo modo, invece, vengono aggiunte al linguaggio vere e proprie
istruzioni e funzioni, riconosciute dall'interprete.
- Questa operazione comporta la modifica dell'interprete, ma ha come enorme
vantaggio la chiarezza nella realizzazione dei programmi. Si veda per
esempio i due modi per eseguire la modifica del colore corrente:
- VIC 30 C = 37888 + 4* (PEEK [36866] AND 128) POKE C,
8
- MS GW-BASIC COLOR, 1
- Esempi di linguaggi di questo tipo sono MSX-Basic e MS GW-Basic, oppure il
Basic per lo Spectrum. Nell'ultima parte di questo articolo viene esaminato
in dettaglio MS GW-Basic.
Linguaggi come libreria di sottoprogrammi
- Per questa ultima categoria il termina linguaggi risulta forse improprio.
Si tratta infatti generalmente di librerie di sottoprogrammi, scritti in un
usuale linguaggio di programmazione come per esempio Fortran, Pascal, C o
Basic. Quindi non sono veri e propri linguaggi, ma piuttosto applicazioni.
La principale differenza però con gli usuali programmi applicativi sta nel
fatto che questi linguaggi-librerie non sono "stand-alone". Non è
possibile cioè "eseguire" un linguaggio di questo tipo (cosa
invece normale, anzi tassativa negli applicativi). Questo perché nelle
librerie non ci sono programmi, ma funzioni.
- Possiamo dire che le librerie costituiscono un modo alternativo per
estendere il linguaggio. Nei casi visti precedentemente, linguaggi come MS
GW-Basic o MSX-Basic sono stati sviluppati modificando l'interprete in modo
che "accogliesse" nel nuovo linguaggio anche istruzioni grafiche.
In questo modo è possibile eseguire dei controlli sintattici. Nel caso
delle librerie, invece, l'estensione avviene in maniera molto più semplice.
Qualsiasi linguaggio va bene. se poi le librerie sono state sviluppate sotto
particolari sistemi operativi (per esempio il VMS della Digital), allora pur
essendo state scritte in un certo linguaggio, possono essere utilizzate da
tutti linguaggi che funzionano sotto quel sistema operativo (purché seguano
le stesse convenzioni sul passaggio di parametri).
- Anche in questo caso la scelta di librerie è grande. Si può ricordare,
per la diffusione che ha raggiunto, GINO-F. Si tratta di una libreria di
routines grafiche e gestionali in grado di funzionare su diversi tipi di
apparecchiature (calcolatori e terminali) composte di due parti:
- Routines "FRONT-END"
- Routines "BACK-END"
- Le prime sono realizzate interamente in linguaggio Fortran ANSI standard
(indipendenti quindi dal tipo di calcolatore). Le seconde, invece,
costituiscono l'interfaccia tra il calcolatore centrale e le periferiche
grafiche, gestendo il collegamento tra il "front-end" e il sistema
operativo. Vi saranno quindi diverse routines "Back-end" per
diversi tipi di terminale (e di calcolatore), mentre la parte
"front-end" non cambia.
- C'è un altro gruppo di linguaggi grafici che segue questo approccio e di
cui parleremo nel prossimo articolo. Sono i cosiddetti standard grafici e si
stanno lentamente imponendo sul mercato perché finalmente permettono il
trasporto di applicazioni grafiche fra sistemi disomogenei.
Un esempio di linguaggio grafico: MS GW-Basic
- Vediamo adesso più in dettaglio un linguaggio grafico: MS GW-Basic
sviluppato dall'americana Microsoft. Questo linguaggio funziona sui personal
computer Ibm compatibili dotati di grafica (per esempio M24 dell'Olivetti).
Appartiene alla seconda categoria in quanto si tratta sostanzialmente di un
Basic fornito di funzioni grafiche "Buildt-in" riconosciute cioè
dall'interprete come facenti parte del linguaggio.
- E' quindi un'estensione del Basic (rispetta i dettami dello standard ANSI)
che fornisce un insieme di istruzioni e di funzioni di grafica che
consentono di visualizzare punti e linee sul video, utilizzando vari colori.
- Per poter utilizzare queste funzioni, occorre selezionare l'ambiente
grafico (mediante l'istruzione Screen). Si possono selezionare tre diversi
modi di grafica:
- Modo a Media Risoluzione (320x200)
- Modo ad Alta Risoluzione (640x200)
- Modo ad Altissima Risoluzione (640x400)
- Questa separazione è stata introdotta per utilizzare il colore senza far
aumentare il costo del calcolatore. Infatti nelle versioni a colori (scheda
grafica del PC-XT dell'Ibm oppure M24 standard a colori dell'Olivetti) il
colore nella grafica può essere utilizzato solamente in Media Risoluzione.
- Per utilizzare il colore in Altissima Risoluzione ci vorrebbe molta più
memoria (per alloggiare il Frame Buffer) e quindi i costi del computer (o
del terminale grafico utilizzato) aumenterebbero necessariamente.
- Vediamo adesso le principali funzioni che MS GW-Basic mette a disposizione
per la grafica:
- Gestione delle coordinate
- Primitive di Output
- Gestione degli attributi
- La gestione delle coordinate avviene sostanzialmente con due istruzioni,
Window e View, che permettono di modificare, rispettivamente la window e la
viewport (vedi articolo numero 3). Sulla finestra definita dalle due
istruzioni, agisce un "line-clipper" che permette di non
visualizzare le parti dell'oggetto esterne alla finestra corrente. Esiste
poi la funzione PMAP, che permette di passare dal sistema di riferimento
fisico, a quello definito dall'utente e viceversa.
- Le primitive di output fornite da MS GW-Basic, coprono le principali
funzionalità richieste da un sistema grafico. Vi sono routines di
tracciamento, come PSET LINE e CIRCLE che permettono di rappresentare punti,
linee, rettangoli, archi, cerchi, ed ellissi (variando i parametri di
chiamata).
- Esiste un'istruzione per il riempimento di aree (PAINT) e una coppia di
istruzioni, GET Grafica e PUT Grafica che permettono di realizzare una
semplice animazione a "Sprites". E' cioè possibile definire degli
oggetti come mappe di bit rettangolari (Sprites) ed utilizzare GET Grafica e
PUT Grafica per farle muovere rapidamente sullo schermo. Parte di queste
istruzioni possono essere utilizzate sia con coordinate assolute,
specificando cioè le coordinate del punto in cui devono essere applicate,
sia relative (mediante l'opzione STEP) specificando il punto di applicazione
come offset dalla posizione corrente.
- Esiste poi una particolare istruzione, DRAW, che permette di rappresentare
figure utilizzando un semplice linguaggio grafico, il Graphics Macro
Language. DRAW riunisce cioè la maggior parte delle possibilità delle
altre istruzioni per la grafica, mettendo a disposizione un facile
linguaggio per definire gli oggetti grafici. Un comando in questo linguaggio
è un singolo carattere (per esempio U corrisponde allo spostamento in alto,
C alla modifica di colore) o una coppia di caratteri all'interno di una
stringa, eventualmente seguiti da uno o più argomenti.
- Per concludere il discorso sulle primitive di output, va segnalato che
l'interprete del MS GW-Basic permette di utilizzare le istruzioni grafiche
con un formato variabile, permettendo così una notevole flessibilità di
utilizzo. La funzione LINE, per esempio, viene definita sintatticamente così:
LINE [[STEP] (x1, y1] − [STEP] (x2, y2) [[color] [B(F)]
[style]] .
- in questo caso le parentesi quadre racchiudono parti dell'istruzione che
sono opzionali (possono cioè essere omesse). Perciò, partendo da un'unica
istruzione, si possono "generare" istruzioni dal comportamento
piuttosto differente:
- LINE − (x,y)
- LINE (x1, y1) − (x2, y2), 3
- LINE (1, 1) − (2, 2),, B
- LINE (1, 1) − (2, 2), 2, BF
- LINE (50, 50) − STEP (15, − 13)
- LINE (0, 0) − (100, 100), 3,, &FHH
- traccia una retta dalla posizione corrente al punto (x, y), utilizzando gli attributi correnti
- traccia una retta da (x1, y1) a (x2, y2) utilizzando gli attributi correnti e il colore
- traccia un rettangolo (opzione Box) con gli attributi correnti
- traccia un rettangolo colorato con il colore 2 (opzione Box Filled)
- traccia una retta dal punto (50, 50) al punto (65, 37) (utilizzo della modalità relativa)
- traccia una retta tratteggiata (opzione style espressa in esadecimale) di colore 3.
- La gestione degli attributi infine non è fata in maniera totalmente
indipendente. Esistono infatti due modalità. La prima mette a disposizione
delle funzioni apposite per modificare gli attributi di visualizzazione; è
questo il caso dell'istruzione Color che permette di specificare il colore
corrente utilizzato dalle successive primitive di tracciamento. La seconda,
invece, incorpora la gestione degli attributi nell'istruzione di
tracciamento, mettendo a disposizione nell'istruzione in questione un
parametro per la modifica del colore di tracciamento. Questo parametro (che
può comunque venire omesso, come spiegato poc'anzi parlando dell'istruzione
LINE), non modifica il valore corrente dell'attributo, ma coinvolge
solamente la primitiva che lo utilizza.
La tomografia assiale computerizzata
- Quando dei raggi-X attraversano un mezzo, vengono attenuati da diversi
processi di assorbimento e di scattering. Perciò l'intensità dei raggi
diminuisce man mano che si addentra nel mezzo. Il numero di raggi-X
attenuati in un mezzo dipende dal numero di raggi incidenti. In particolare,
per ogni punto attraversato dai raggi, viene calcolato un parametro fisico,
detto coefficiente di attenuazione lineare, che rappresenta il grado di
attenuazione che il raggi-X hanno subito in quel punto e che dipende, oltre
che dal fascio di raggi incidenti, anche dal materiale.
- Durante il processo di ricostruzione dell'immagine, ad ogni pixel viene
associato un numero, detto CT number (Computed Tomography number) collegato
al coefficiente di attenuazione lineare del materiale. Generalmente questo
numero oscilla in un certo intervallo, in modo che ad ogni particolare
valore (discreto) si può associare un particolare livello di grigio sullo
schermo in cui viene visualizzato il risultato della radiografia.
L'associazione dei livelli di grigio (o anche colori) al CT number è
arbitrario, ma generalmente si tende a generare un'immagine confrontabile
con una radiografia classica. perciò maggiore è l'assorbimento in un
punto, più scura sarà la rappresentazione sul terminale. In questo modo
per esempio, le masse acquose risulteranno molto chiare, mentre le protesi
metalliche (massimo assorbimento) saranno nere.
- La principale differenza con la tradizionale radiografia, sta nell'avere a
disposizione l'immagine in forma digitale. E' quindi possibile applicare
all'immagine ricavata dai sensori dello strumento, delle elaborazioni
numeriche, che possono aumentarne sensibilmente la qualità, evidenziando
per esempio le strutture, oppure rimuovendo il "rumore di fondo".
Inoltre la TAC viene fatta utilizzando molti sensori che, durante il
rilevamento, vengono ruotati permettendo di avere immagini provenienti
da diverse sezioni del corpo, mentre nella radiografia tradizionale, una
parte del corpo viene irradiata con un fascio di raggi-X e si raccoglie su
lastra o su pellicola l'intensità della radiazione emergente dalla parte
opposta.
- Se si vuole vedere parti differenti, bisogna fare un'altra radiografia,
modificando la posizione del corpo rispetto al fascio incidente.
- La Tomografia Assiale Computerizzata non è comunque l'unica tecnica
diagnostica che si basa sull'utilizzo del calcolatore. Anzi le applicazioni
del computer per le diagnosi di malattie stanno moltiplicandosi. Basti
pensare alla scintigrafia (iniezione nel paziente di sostanze marcate con
radioisotopi e successiva rilevazione della radioattività), oramai
consolidata nella pratica medica, alla termografia, alla ecografia, per
citarne alcune. Tra le tecniche in fase di sviluppo va segnalata la RMN
(Risonanza Magnetica Nucleare), che permette di studiare la biochimica dei
tessuti "in vivo" (per esempio identificando la variazione della
concentrazione del fosforo presente nei tessuti). E' quindi possibile avere
delle informazioni sull'andamento del metabolismo nel corpo del paziente.
Inoltre questa tecnica diagnostica utilizza dei campi magnetici, sicuramente
meno dannosi dei raggi-X.
Il linguaggio Smalltalk
- Nei primi anni '70 il Learning Research center Group del Parc incominciò
a lavorare su u n modo nuovo con il quale la gente avrebbe potuto usare in
maniera effettiva e "giocosa" (Goldberg e Robson usano la parola
"joyfully") il computer. Nel 1981 il nome del gruppo venne
cambiato in Software Concepts Group (SCG): Il suo scopo divenne creare un
sistema informativo potente nel quale l'utilizzatore potesse memorizzare e
modificare le informazioni in modo che il sistema crescesse nello stesso
modo in cu crescono le idee. La strategia del SCG per realizzare questa
nuova concezione proponeva di concentrarsi su due aree principali di
ricerca:
- Un linguaggio di descrizione, che servisse come interfaccia tra il
modello presente nella mente umana e il modello presente nel computer.
- Un linguaggio di interazione, che facesse combaciare il sistema di
comunicazione umano con quello del computer.
- Il risultato di questa pluriennale ricerca è Smalltalk. Possiamo
definirlo come un ambiente di programmazione grafico e interattivo in cui
ogni componente presente nel sistema, se è accessibile all'utente, allora
viene rappresentata in un modo significativo per l'osservazione e la
manipolazione.
- L'elemento base in Smalltalk è quindi l'Oggetto. Esso viene definito da
uno stato, rappresentato da una "instance variable" e può
utilizzare delle operazioni dette "metodi", che vengono richiamate
da altri oggetti mediante dei "messaggi" che specificano il nome
dell'oggetto richiamato, il nome del metodo da invocare e dei parametri
attuali da associare al metodo. Sostanzialmente si tratta di una
"procedure call" convenzionale, con la differenza che il legame
tra il nome del metodo richiamato e il metodo stesso avviene in fase di
esecuzione e non in fase di compilazione/linkaggio, oppure di caricamento.
Per questo motivo Smalltalk viene detto linguaggio "object-oriented".
- Per realizzare questo ambiente occorrono periferiche grafiche; in
particolare un video grafico ad alta risoluzione e una periferica di input
(la più usata è il mouse).
- I concetti grafici basilari utilizzati da Smalltalk sono le Icone, che
denotano graficamente gli oggetti presenti nel sistema, e le Window,
porzioni di schermo con associati alcuni oggetti, una procedura da eseguire
e uno stato (attiva oppure no). In questo modo è possibile avere sul video
più finestre aperte (e cioè più applicazioni) contemporaneamente; di
queste però una sola sarà quella attiva.
5- GRAFICA E AUTOMAZIONE D'UFFICIO (lug-ago 1986)
Introduzione
- In questo articolo e nel prossimo (che concluderà questa breve rassegna)
parleremo "finalmente" dell'ingresso della computer graphics nel
mondo dell'automazione d'ufficio. Vedremo quali aspetti, sia hardware che
software, stanno maggior,ente modificando l'automazione d'ufficio.
- Si può dire che sono principalmente due le soluzioni mutuate dalla
grafica che si stanno legando sempre più indissolubilmente con
l'automazione d'ufficio, vista ovviamente nel suo senso più lato. Il primo
riguarda il rapporto tra l'utente e il calcolatore con i suoi programmi.
Chiamato spesso "Interazione uomo-macchina", questo aspetto sta
diventando sempre più centrale nella pur dinamica realtà informatica. Si
tratta sostanzialmente di migliorare il modo con cui l'utente dialoga con la
macchina, riducendo al minimo le convenzioni sintattiche ed i vincoli
comunicativi. Il dialogo deve essere diretto, non mediato; l'utilizzatore
deve essere in grado di indicare esattamente ciò che vuole fare, nel modo
più semplice possibile. Di qui lo sviluppo delle cosiddette interfacce
iconiche.
- Il secondo aspetto, invece, riguarda l'ambito più istituzionale della
grafica ed è più antico delle problematiche dell'interazione
uomo-macchina. Si tratta di utilizzare la grafica per rappresentare dati in
maniera più diretta, in modo da evidenziarne le interrelazioni e i trends.
Abbiamo già parlato dei vantaggi (e dei "pericoli") di una
rappresentazione grafica di dati. E' venuto quindi il momento di
affrontare questo aspetto più in dettaglio, osservando quali prodotti vi
sono sul mercato, confrontandoli e studiando brevemente le modalità di
utilizzo.
- Seguendo una consuetudine oramai cementata nella stampa specialistica,
chiamerò Business Graphics, quella parte della grafica al calcolatore che
si occupa di rappresentar dati tabellari utilizzando varie rappresentazioni,
anche se non necessariamente i dati da raffigurare sono di tipo economico.
Interazione uomo-macchina
- Già nel precedente articolo, parlando di Smalltalk e del Macintosh della
Apple, erano emerse le "interfacce iconiche", introducendo
concetti come windows e icone.
- Adesso vorrei entrare in maniera più dettagliata, nelle caratteristiche
tecniche. Si può dire che un'interfaccia iconica è costituita dai seguenti
componenti:
- pointing device,
- multi-windows,
- pop-up (o drop-down) menu.
- I Pointing Devices altro non sono che un particolare tipo di periferica di
input, che fornisce come valori d'ingresso delle posizioni, piuttosto che
dei caratteri come fa per esempio la tastiera. Queste periferiche sono
i cardini delle interfacce di tipo iconico, in quanto permettono di
"puntare" (da qui il termine "pointing") ad un oggetto e
quindi selezionarlo. In questo modo se voglio vedere il contenuto di un
disco (esaminare la sua directory, per usare una terminologia più
classica), mi limiterò a selezionare il disco (rappresentato sul video da
una icona opportuna) e ad "aprirlo" (cioè a vederne il
contenuto).
- Mancando un colloquio di tipo verbale, in cui si può vedere rapidamente
l'erronea specificazione di un comando, l'interfaccia iconica richiede che
in qualche modo il sistema segnali all'utente qual è stata l'icona
selezionata. Ciò è ancora più evidente quando vi sono delle icone
sovrapposte.
- Per questo motivo è stato introdotto un meccanismo di feed-back (detto
anche retroazione) che permette di indicare all'utente quale è l'icona
selezionata. Generalmente si usa renderla più luminosa oppure, lavorando su
schermi a fondo bianco, colorarla di nero.
- Il secondo componente di un'interfaccia iconica è il sistema a
multi-windows che permette di avere sulla superficie di visualizzazione più
oggetti. L'idea è di simulare la scrivania in cui generalmente non c'è
solo il documento che stiamo consultando, ma anche altre cose, come per
esempio l'agenda, una calcolatrice, oppure altri documenti che ci servono
come consultazione. Naturalmente, in ogni istante, noi staremo utilizzando
un solo "oggetto", però può tornare utile averne sottomano
diversi.
- Il "multi-windows" è stato sviluppato seguendo questa analogia.
Sul video possono essere aperte più finestre (a ciascuna delle quali è
associato un oggetto), una sola è quella attiva, quella cioè su cui è
possibile lavorare.
- Storicamente il concetto di multi-windows è una realizzazione del "timeshared
CRT", cioè della spartizione del video fra più processi. Questo a sua
volta deriva dal più noto "timeshared CPU", che nei primi anni
'70 ha permesso la realizzazione di primi sistemi a partizione di tempo (time-sharing
system). Il modulo software che presiede alla gestione delle finestre è il
Window Manager, che processa i comandi utente (o del sistema operativo)
orientati alla creazione e manipolazione delle finestre. Fra tutte le
finestre aperte (cioè presenti sul video), una sola ha
"corrente", cioè interagisce con l'utente (per esempio
accettandone l'input).
- L'operazione di switch tra una finestra e l'altra rende corrente quella di
arrivo e genera un cambiamento di contesto anche nel sistema operativo
(cambia anche il processo attivo). Per facilitare queste operazioni, il
window manager associa ad ogni finestra una priorità, che corrisponde alla
sua profondità su video. Perciò la finestra attiva avrà la massima
priorità.
- Dal punto di vista grafico, il window-manager è interessante per gli
algoritmi di "redisplay". Vi sono infatti varie tecniche che
minimizzano le operazioni di ritracciamento. Se per esempio cancelliamo dal
video una finestra ed essa ne copre delle altre, potremmo aggiornare la
situazione ritracciando tutte le finestre tranne quella da eliminare,
partendo da quella più coperta (che ha la priorità più bassa). Se però
fosse possibile individuare quali sono le finestre effettivamente coperte
prima della cancellazione (chiamate "redrawing chain"), potremmo
ritracciare solo quelle.
- Infine i "drop-down" (o "pop-up") menu sono dei menu
che vengono visualizzati non appena il cursore passa vicino alla riga dei
comandi in alto sullo schermo (detta "menu bar").
- Il termine "drop-down" fa riferimento al fatto che non appena il
cursore controllato dal mouse passa vicino all'intestazione di un menu,
appare un menu ed è come se venisse appoggiato sullo schermo dall'alto
verso il basso. Una volta apparso il menu, è sufficiente posizionare il
cursore su una delle voci per selezionarla (viene annerita).
- Per rendere poi operativa la scelta selezionata, bisognerà premere un
tasto del mouse. La loro elevata flessibilità sta nel fatto di poter
fornire una grande quantità di scelte (fino ad una decina per ogni menu)
pur rimanendo al livello principale e senza perdere una certa organizzazione
gerarchica.
- Il loro inquadramento gerarchico viene preservato oltre che dal nome del
menu (a cui si deve fare riferimento per utilizzare il menu in questione)
anche dalla possibilità di rendere alcune opzioni non selezionabili. Ciò
viene realizzato colorandole di grigio e impedendo per queste la selezione
col cursore.
Approccio formale alla interazione uomo-macchina
- La sempre più crescente importanza di una potente e flessibile
interfaccia uomo-macchina nelle più svariate applicazioni ha determinato la
necessità di una sua formulazione. Con ciò non sarebbe più semplice (e
meno ambiguo) dare, in maniera non dipendente dal particolare ambiente
hardware/software utilizzato, delle specifiche per sviluppare programmi con
applicazioni di tipo grafico. Non è un compito semplice in quanto tutte le
applicazioni di tipo grafico vantano due caratteristiche strutturali:
- presenza di numerosi costrutti speciali, differenti dalle usuali
strutture dati, come per esempio: picture, trasformazioni geometriche,
strutture grafiche gerarchiche;
- elevata interazione.
- Detto comunque in altri termini, lo scopo delle specificazioni formali di
un linguaggio è il fornire una sua precisa caratterizzazione ad un certo
livello (conveniente) di astrazione. la presenza in un linguaggio di elevata
interazione (per esempio per l'utilizzo di un mouse) introduce nella
generale problematica dell'Input/Output anche dei particolari vincoli di
sincronizzazione. Vi sono infatti due processi (il computer e l'utente)
concorrenti ed indipendenti (tranne quando l'utente vuole dei risultati
oppure quando il computer richiede dell'input).
- Spesso uno dei problemi che sorge è quello detto "busy waiting",
che ha origine ogni qualvolta si utilizzano dei costrutti del tipo: While
nessun input DO aspetta.
- Per evitare questi continui cicli "aspettando dell'input"
bisogna fare in modo che la sincronizzazione dei processi non sia gestita
dal programma applicativo, ma dal sistema operativo, in modo che egli possa
amministrare in maniera efficiente le risorse di calcolo.
- Per formalizzare gli usuali linguaggi di programmazione vengono
generalmente utilizzate delle specificazioni di tipo algebrico. I linguaggi
grafici, invece, presentando un alto livello di interattività che perlopiù
si manifesta sotto differenti modalità, richiedono delle assunzioni più
generali, in particolare:
- una operazione può aspettare finché l'oggetto ad essa associato
raggiunga uno stato particolare (a causa dei vincoli di
sincronizzazione), prima di ritornare al programma chiamante;
- le operazioni possono avere effetti collaterali sullo stato
dell'oggetto al quale sono associate.
- Perciò la sincronizzazione assume un ruolo centrale e quindi l'attenzione
va concentrata su una sua formalizzazione. Per esempio può essere descritta
esplicitando i vincoli di temporizzazione e cioè creando dei tipi di dati
"condivisi" che dispongano, per ogni tipo di operazione, delle
seguenti informazioni:
- le condizioni alle quali l'operazione può essere eseguita;
- il valore ritornato dall'operazione;
- l'effetto dell'operazione sullo stato dell'oggetto.
- Questo problema è comunque ancora agli inizi, anche se R. Mallgren ha
proposto, come PhD Thesis un'interessante formalizzazione dei linguaggi
grafici.
La storia di Officetalk
- Tornando ad argomenti più concreti, e chiarite le componenti principali
di un sistema multiwindow che utilizzi un'interfaccia iconica, può essere
interessante raccontare la storia del primo sistema di questo genere:
Officetalk-Zero. Si tratta infatti del primo matrimonio significativo tra
grafica ed automazione d'ufficio.
- Il progetto Officetalk iniziò nel 1976 sotto gli auspici del PARC (Palo
Alto Research Center) della Xerox focalizzandosi sui due principali problemi
incontrati dai realizzatori di sistemi di ufficio sperimentali: integrazioni
e correttezza dei dati.
- All'interno del PARC erano già stati sviluppati numerosi strumenti di
automazione d'ufficio, come text-editors, gestori di files, creatori di
illustrazioni, posta elettronica; non erano però integrati fra di loro.
- Il progetto iniziò dunque con una serie di studi condotti in diverse
realtà di ufficio esterne al PARC. Sulla base dei risultati ottenuti, fu
disegnato un sistema integrato d'ufficio chiamato Officetalk-Zero.
Inizialmente fu implementato come dimostrazione di fattibilità; venne poi
reimplementato come sistema prototipale "full-scale" e fu
distribuito in un dipartimento amministrativo della Xerox.
- Gli studi preliminari permisero al gruppo di identificare un certo numero
di proprietà del lavoro d'ufficio che suggerirono altrettante richieste nel
sistema integrato. Fu notata per esempio una notevole difformità di
operatività in procedure che eseguono compiti simili; perciò era
necessario permettere che ciascun utente potesse sviluppare il proprio
metodo di lavoro. Inoltre gli impiegati hanno bisogno di poter far
riferimento a numerosi files o documenti in maniera concorrente e disporre,
a portata di mano, di una grossa quantità di informazioni ad "accesso
rapido". Fu notata anche la rapidità con cui costoro cambiavano
attività (sospendendo la precedente) per rispondere ad interruzioni ad alta
priorità e l'importanza di comunicazioni di tipo verbale (non strutturale).
Tutte queste considerazioni vennero raccolte nel disegno dell'interfaccia
utente di Officetalk-Zero.
- Officetalk-Zero è essenzialmente un sistema per manipolare documenti, che
possono essere memo di una o più pagine, lettere, "office forms",
reports, brochures illustrate, ecc. E' possibile raggruppare, sulla pagina
di un documento, testo, dati e immagini. Il sistema mette a disposizione uan
serie di funzioni per la gestione dei documenti come il text-editing, la
grafica, il page layout, la memorizzazione ed il reperimento delle
informazioni, la posta elettronica. I documenti vengono visualizzati sul
video nella loro forma definitiva ("What you see is what you get")
utilizzando un sistema a finestre che permette la visibilità di più
documenti contemporaneamente (seguendo quindi una delle osservazioni fatte
in fasi di analisi).
- Il sistema venne implementato per funzionare sotto il sistema operativo
del computer Alto della Xerox e in rete locale (Ethernet). Per realizzare
effettivamente un sistema distribuito, venne utilizzato un File Server
"shared" che poteva essere raggiunto dai vari computer Alto del
sistema tramite la rete Ethernet. Sul File Server era memorizzato l'intero
ambiente informativo del sistema che veniva utilizzato dagli Alto su
esplicita domanda. In questo caso le informazioni necessarie venivano
trasferite tramite la rete e memorizzate sui dischi (locali) degli Alto.
Periodicamente il contenuto di questi dischi era rispedito al File Server
per l'aggiornamento.
- I documenti vengono rappresentati mediante una struttura gerarchica ad
albero.
- Al livello pagina, tutti gli oggetti non testuali sono muniti di
coordinate (x, y) per assicurare un rapido meccanismo di selezione. Ogni
documento mantiene traccia della sua "storia" e contiene uno
"style sheet" che contiene tutti gli stili (per esempio neretto,
corsivo, sottolineato per i testi, oppure solido tratteggiato o punteggiato
per i grafici) utilizzati e che può essere modificato in qualsiasi momento
della storia del documento.
- Questa esperienza è proseguita in Xerox nel sistema STAR, che può essere
visto come una versione ingegnerizzata di Officetalk-Zero, in cui sono state
modificate alcune caratteristiche dell'interfaccia. per esempio in STAR le
finestre non si sovrappongono; ciò è stato fatto per scoraggiare l'utente
nel perdere tempo a modificare (spesso inutilmente) la dimensione della
finestra.
La Business Graphics
- Concludo questo articolo parlando brevemente della Business Graphics.
L'argomento non dovrebbe costituire una novità e perciò non mi
dilungherò. Nel primo articolo di questa rassegna avevo analizzato il
problema della rappresentazione grafica dei dati tabellari, soprattutto
visti in rapporto con la teoria della percezione. In particolare è
interessante il lavoro di Bertin sulla Semiologia Grafica, in cui viene
analizzata la grafica dal punto di vista comunicativo, identificando
variabili grafiche e meccanismi di rappresentazione massimizzanti la
"resa grafica".
- In questo ambito, invece, il problema è più pratico. Le acute
osservazioni di Bertin devono essere rese più operative. Un modo può
essere quello adottato da A. Paller, K. Szoka, N. Nelson in [PALL81] e
schematizzato nel box 2.
- Ma quali sono le caratteristiche di un pacchetto di Business Graphics?
Come sempre le generalizzazioni possono creare dei problemi, data la vastità
del mercato. Va detto però che la Business Graphics è sempre più legata
al cosiddetto "software integrato".
- Programmi come Lotus 123 o Goldengate della PC Cullinet oltre a fornire
delle tabelle elettroniche integrate con dei gestori di archivi e dei word
processors dono dotati di facilities grafiche per la rappresentazione dei
dati elaborati.
- Più un sistema è sofisticato, più tipi di rappresentazioni fornirà
all'utente. Un elenco delle generiche funzionalità potrebbe risultare
alquanto tedioso. Nel box 3 viene analizzato un pacchetto di Business
graphics tra i più recenti, Gem-Graph, che ben chiarisce le funzionalità
facendo intravedere le incredibili potenzialità d'uso. Non sempre,
comunque, maggiore capacità rappresentativa implica una maggiore chiarezza
nella lettura dei dati. Vi sono per esempio delle bellissime
rappresentazioni a tre dimensioni, in cui la lettera non appare molto
chiara.
Il GKS e l'interazione
- In GKS i dati inseribili in un programma sono divisi in sei differenti
tipi; perciò vengono definite sei corrispondenti periferiche logiche
d'ingresso (Logical Input Device) associate a questi tipi di dati:
- Locator: inserisce una posizione (X, Y)
- Pick: identifica un oggetto visualizzato
- Choice: seleziona fra scelte possibili
- Valuator: inserisce un valore
- String: inserisce una stringa di caratteri
- Stroke: inserisce una sequenza di punti (X, Y)
- Locator e Pick operano sull'ingresso in maniera direttamente dipendente
dalle caratteristiche della periferica utilizzata (usualmente la penna
ottica è una periferica di tipo "pick") anche se, come tutte le
periferiche di tipo logico, sono oggetti virtuali non necessariamente
esistenti. In particolare ogni periferica logica può essere
"simulata" (prescindendo da considerazioni di efficienza) da una
fisica. La ripartizione in classi operata dal GKS facilita notevolmente lo
sviluppo di programmi interattivi perché obbliga (scegliendo un particolare
dispositivo virtuale) ad esplicitare la modalità con cui si vuole
utilizzare il dispositivo.
- Oltre ad una suddivisione del tipo di periferica, il GKS considera anche
le modalità con le quali avviene l'interazione:
- Request Mode
- Sample Mode
- Event Mode
- In Request Mode l'interazione avviene in maniera asincrona. Il programma
richiede al dispositivo selezionato di fornirgli dei dati e si pone in
attesa fin quando non li ha ottenuti. Questa modalità corrisponde alla
usuale READ del Fortran o del Pascal, che viene detta "bloccante"
perché sospende temporaneamente l'esecuzione del programma.
- La modalità Sample, invece, è molto più flessibile in quanto non
interrompe il flusso del programma. In questo caso il programma non fa una
esplicita richiesta, ma è la periferica in questione che continua a inviare
dei dati. Normalmente questi dati vengono ignorati; quando il programma
vuole un input di tipo Sample, si limita a utilizzare i dati appena giunti.
- La modalità Event infine può essere vista come una specie di compromesso
fra le due precedenti. Anche in questo caso la periferica invia dei dati al
computer senza una specifica richiesta. La differenza sta però nel fatto
che questi dati non vengono persi ma vengono messi in una coda (una per ogni
tipo di periferica) gestita dal sistema. Perciò quando il sistema richiede
un dato in modalità Event, in effetti preleva il dato dalla coda relativa
alla periferica in questione. Se però questa coda è vuota, il sistema si
interrompe (diventa quindi una operazione asincrona) fintantoché o la
periferica invia un dato, oppure trascorre un certo intervallo di tempo.
Questa maggiore flessibilità richiede però, da parte del sistema, una
pesante gestione delle code.
Alcune regole per una corretta rappresentazione grafica
- La rappresentazione grafica dei dati può essere uno strumento molto
potente per scoprire nuove relazioni fra i dati, non emergenti dalle usuali
rappresentazioni tabellari. Va però utilizzata con cautela, scegliendo una
tecnica che sia congruente con il tipo di dati che si vuole analizzare. Si
era già parlato della teoria relativa alla percezione e alla
riclassificazione dei dati (art. 1).
- In questo box, invece, si vogliono dare delle semplici regole operative,
che siano di ausilio agli utilizzatori della Business Graphics, in modo da
limitare i "problemi" dovuti ad un'errata scelta della tecnica di
rappresentazione. Queste 20 regole provengono da un testo scritto da A.
Paller, K. Szoka e N. Nelson e pubblicato dalla Cds Italia spa.
- Utilizzare diagrammi ben disegnati.
- Prima di scegliere il tipo di diagramma, determinare cosa si vuole
esprimere esattamente e quali relazioni evidenziare.
- Disegnare le curve con un tratto più spesso delle griglie.
- Quando c'è spazio inserire direttamente la denominazione relativa
alla curva
- Scrivere orizzontalmente la denominazione degli assi.
- Spaziare sufficientemente i valori sugli assi in modo da facilitarne
la lettura.
- Nel caso di diagrammi multipli utilizzare la stessa scala in modo da
facilitare il confronto dei diversi trend riportati.
- Indicare lo zero qualora si confrontino livelli totali.
- Indicare l'eventuale omissione dello zero.
- Utilizzare scale che rendano facile l'interpolazione.
- Per comparare dati annuali utilizzare curve di diverso spessore con
tratto continuo o tratteggio lungo, riservando le curve con tratteggio
corto per le proiezioni.
- Nel caso di grafici a torta limitare i segmenti a non più di cinque.
- Negli istogrammi orizzontali o verticali, le barre o le colonne devono
essere più ampie dello spazio che le divide.
- Disporre i colori in modo tale che la tonalità scura precede quella
chiara.
- Se c'è spazio sufficiente, posizionare commenti e denominazioni
nelle aree colorate.
- Disporre i dati in modo tale che gli andamenti irregolari non
distorcano i trend posizionali nella parte superiore del grafico.
- Evitare di utilizzare scale logaritmiche a meno che l'utente finale
non abbia familiarità con esse.
- Ordinare i colori nella legenda secondo una regola logica.
- Le griglie non devono attraversare gli istogrammi.
- Utilizzare un solo tipo di carattere per lo stesso grafico; cercare di
usufruire dello stesso tipo di stile per i grafici di una presentazione.
E' preferibile utilizzare caratteri semplici e facilmente leggibili.
Gem-Graphs: un pacchetto avanzato per la Business Graphics
- Gem-Graphs è un programma di Business Graphics funzionante sotto il
sistema operativo Gem (Graphics EnvironMent) della Digital Research.
Fornendo Gem una interfaccia iconica possiamo considerare questo programma
come l'unione dei due aspetti in cui la grafica viene coinvolta
nell'automazione d'ufficio: interfaccia uomo-macchina e Business Graphics.
- L'utilizzo di questo programma è veramente semplice ed offre delle
potenzialità inaspettate. Nella figura 5 si vede una tipica videata di
Gem-Graphs, in cui si può notare un grafico tridimensionale appena
sviluppato e il menu dei tipi di grafici. Sono infatti a disposizione
dell'utente ben 6 tipi di rappresentazione:
- grafico normale (con rette e simboli per evidenziare sia i punti che i
trends);
- istogrammi in vari formati (bi- o tri-dimensionali, clustered o
stacked, verticali o orizzontali);
- torte;
- aree;
- con simboli; è possibile utilizzare dei simboli, costruibili
dall'utente, per sfruttare l'associazione visiva tra simbolo ed oggetto
rappresentato;
- con le cartine; Gem-Graphs fornisce due cartine (quella americana e
quella europea), a cui è possibile associare per ogni stato un valore
che verrà poi evidenziato utilizzando colori uguali per valori uguali.
- L'estrema flessibilità di questo strumento sta nel fatto che una volta
introdotti i dati (e ciò viene fatto molto semplicemente, mediante una
maschera che simula una matrice e che permette di modificare,
aggiungere, copiare o cancellare molto velocemente), la scelta del tipo di
rappresentazione viene fatta interattivamente. E' possibile cioè scegliere
il diagramma a torta, visualizzarlo e se non soddisfa, provare con un altro
tipo di rappresentazione. I tempi di visualizzazione per un normale set di
dati sono inferiori al minuto. Una volta scelta la rappresentazione, è
possibile modificare comunque alcune parti del disegno, per esempio
cambiando alcuni colori o aggiungendo commenti. Per i più esigenti è anche
possibile manipolare il grafico generato, utilizzando un programma per la
manipolazione dei disegni (Gem-Draw) che permette, per esempio, di
aggiungere vere e proprie immagini.
6 - STRUMENTI GRAFICI PER L'AUTOMAZIONE D'UFFICIO (set 1986)
Introduzione
- Con questo articolo si conclude la breve rassegna sulla Computer Graphics.
I criteri guida non sono stati certo la completezza e la esaustività della
materia, ma piuttosto i suoi fondamenti, le principali metodologie
utilizzate e i suoi rapporti con l'automazione d'ufficio. Proprio a questo
proposito l'articolo precedente aveva messo in luce i due principali aspetti
della grafica al calcolatore che meglio si adattano ad essere utilizzati per
sviluppare strumenti per l'automazione d'ufficio. Quel discorso viene ora
ripreso ed esteso in modo da comprendere altri due aspetti, meno diffusi ma
più innovativi, in cui l'office automation nella sua accezione più ampia,
beneficia degli strumenti prodotti dalla computer graphics: la
trasportabilità delle applicazioni su sistemi diversi (per sistema si
intende una particolare configurazione hardware/software) e l'utilizzo di
tecniche di grafica per eseguire operazioni tipicamente non-grafiche come la
ricerca di dati all'interno di un database oppure la lettura automatica dei
testi.
Gli standard grafici
- L'automazione di ufficio, caratterizzandosi sempre più come una soluzione
sistemistica che permette di collegare ambienti diversi permettendo per
esempio lo scambio di informazioni, è sempre più sensibile alle
problematiche dell'integrazione dei sistemi (visti come risorse
hardware/software che svolgano determinati compiti).
- La tecnologia delle reti locali è un classico esempio in cui vengono
fornite delle infrastrutture che permettono la comunicazione fra "realtà"
sistemiche molto diverse (per esempio computer prodotti da case differenti
oppure computer di differenti dimensioni oppure ancora computer simili ma
collocati in posti diversi). Nel caso della grafica questo problema è
amplificato in quanto la disomogeneità può essere presente anche
all'interno dello stesso sistema.
- Per esempio un calcolatore può avere il video grafico di una marca e il
plotter di un'altra. Per questo motivo le attività di standardizzazione
degli organismi nazionali ed internazionali (ANSI, DIN, ISO ...) stanno
assumendo un ruolo sempre più strategico nel proporre strumenti per la
realizzazione di soluzioni informatiche. Nel caso delle reti locali, per
esempio, esiste una proposta di standardizzazione dell'ISO (International
Standard Organization) detta OSI (Open System Interconnection) che definisce
in che modo un sistema deve presentarsi all'esterno per poter colloquiare
con altri sistemi OSI-compatibili senza porre vincoli sull'organizzazione
interna del sistema stesso. Per realizzare ciò OSI propone un'architettura
a strati (sono sette) in cui lo strato più basso è responsabile della
comunicazione fisica fra due calcolatori a livello di impulso elettrico
(Phisical layer), mentre quello più alto (Application layer) gestisce il
trasferimento di informazioni strutturate (documenti) fra i due calcolatori.
Il modello di riferimento, quindi, implica la definizione delle interfacce
logiche tra strati adiacenti e la definizione dei protocolli di colloquio
tra processi di pari livello operanti su apparecchiature eventualmente
diverse.
- La computer graphics, invece, non ha avuto un approccio così unitario al
problema degli standard. Tralasciando la sua storia travagliata possiamo
dire che gli standard emersi variano a seconda dei campi di applicazione o
delle risorse utilizzate. La grafica tradizionale (primitive grafiche,
trasformazioni geometriche) ha visto l'0affermazione di due proposte di
standard: il CORE proposto dall'ANSI (American National Standard
Organization) e oramai sulla via del tramonto, e il GKS proposto
dall'organismo tedesco che regola gli standard industriali (Deutsche
Industrie für Normung) e accettato recentemente come standard
internazionale dall'organismo internazionale per l'approvazione degli
standard (ISO).
- Entrambi questi linguaggi basano la loro indipendenza dal sistema
utilizzato mediante il concetto di coordinate normalizzate (NDC). Questo
sistema di coordinate viene inserito tra i due usuali sistemi di coordinate:
- WC: World Coordinates e cioè coordinate del modello
- DC: Device Coordinates e cioè coordinate della periferica
- Viene cioè supposta l'esistenza di una periferica virtuale che presenta
una risoluzione di [0x1, 0x1] espressa in numeri reali (da qui il
termine normalizzato). In questo modo il linguaggio non eseguirà i suoi
comandi sulle periferiche reali, ma solo su questa virtuale. Vi saranno poi
programmi appositi, chiamati drivers (uno per ciascun tipo di periferica),
che si preoccuperanno di tradurre i comandi espressi in NDC, in comandi
comprensibili dal tipo di periferica utilizzata. Questo approccio permette
di sviluppare applicazioni grafiche senza dover conoscere le caratteristiche
hardware della periferica.
- Data però la grande dimensione (in termini di codice) di questi due
linguaggi e la sempre maggiore diffusione dei personal computer, è in fase
di accettazione un nuovo standard, detto PMIG (Programmer's Minimal
Interface to Graphics) adattato alle limitate risorse (anche se in fase di
veloce espansione) dei personal computer ma che mantenga però il concetto
di periferica virtuale.
- Esiste anche un nuovo standard, detto PHIGS (Programmer's Hierarchical
Interactive Graphics System) e pensato come estensione del GKS, il cui scopo
è fornire delle strutture grafiche avanzate come per esempio strutture dati
grafiche gerarchiche e le relative funzioni per gestirne l'animazione. Può
quindi essere pensato come una specifica funzionale sul controllo e lo
scambio di dati tra un programma applicativo e il suo sistema di supporto
grafico (per es. GKS) che fornisce una serie di funzioni grafiche avanzate
come maggiore interazione e più stretta connessione tra programma
applicativo e software grafico; elevata interattività; strutturazione
gerarchica dei dati; possibili modifiche in tempo reale dei dati grafici;
supporto per articolazioni geometriche; adattabilità all'utilizzo in
ambienti distribuiti; gestione di dati a due o tre dimensioni.
- E' disponibile anche uno standard, detto NAPLPS (North American
Presentation Level Protocol Syntax) e proposto nella sua forma originale
dalla AT&T, che standardizza il trasferimento di immagini e testi,
prescindendo dal mezzo trasmissivo, che può essere rete telefonica, radio
FM, rete televisiva o altro.
- Tralasciando i dettagli, si può riassumere l'approccio dei linguiaggi
grafici standard dicendo che il problema del trasporto del software in
ambienti disomogenei viene risolto introducendo il concetto di risorsa
virtuale. I programmi non vengono più scritti per un particolare computer
(o per una particolare periferica) ma per un computer astratto. Vi saranno
poi dei moduli software, detti drivers, che avranno il compito di tradurre i
comandi inviati alla risorsa virtuale in comandi comprensibili da un
particolare computer o periferica. Vi sarà quindi un driver per ogni tipo
di risorsa. In questo modo le applicazioni vengono sviluppate senza far
riferimento ad una particolare situazione sistemica. Una volta sviluppata
l'applicazione, se si vorrà adattarla per una nuova risorsa, non si dovrà
fare altro che scrivere (se non esiste già) il driver che l'associa alla
risorsa virtuale.
- Questa metodologia non si limita alla computer graphics tradizionale.
Anche sistemi per il text processing come TROFF o TEX utilizzati per gestire
l'output dei documenti e far coesistere insieme al corpo del documento
informazioni tipicamente non testuali come formule matematiche o tabelle,
utilizzano questo approccio generando un documento intermedio, indipendente
dalla stampante sulla quale verrà poi generato il documento finale.
- 1974 Viene formato in ambito ACM il Siggraph GSPC
(Graphics Standards Planning Committee)
- 1976 Viene organizzato a Seillac, in Francia, dall'IFIP
(International Federation of Image Processing) un Workshop internazionale
sulla metodologia in Computer Graphics e si crea un gruppo di lavoro (IFIP
WG5.2.).
- 1977 Vengono pubblicate le specifiche CORE GSPC e GKS.
- 1979 Il GKS 5: viene accettato come "ISO Working
Draft" e contemporaneamente viene pubblicata la versione definitiva del
CORE, concludendosi così l'attività del Siggraph GSPC che si scioglie;
inizia il lavoro su VDI e VDM.
- 1981 AT&T annuncia NAPLPS (North American
Presentation Level Protocol Syntax).
- 1982 GKS 6.8 viene registrato come proposta standard
ISO; VDI; VDM e NAPLPS ricevono supporto dalle industrie.
- 1983 GKS viene accettato dall'ISO come standard
ufficiale.
La grafica e il problema dei testi
- Altro aspetto di fondamentale importanza in cui la grafica ha dato
notevoli contributi è la gestione dei testi. Due sono soprattutto gli
aspetti in cui la metodologia grafica è stata maggiormente applicata:
- Coesione di testo e informazioni non testuali
- Lettura automatica del testo
- Sul primo argomento ci sarebbe molto da dire, ma lo spazio è ristretto.
Basti dire che sono stati sviluppati molti sistemi, ciascuno con
caratteristiche peculiari, che permettono l'affiancamento all'usuale
informazione testuale di oggetti grafici. La loro differenza sta
generalmente nel tipo di oggetti grafici affiancabili. Essi possono essere
per esempio tabelle di dati, formule tecniche (logiche, matematiche o
chimiche), note musicali, grafici e altre ancora. Un linguaggio oramai
affermato nella comunità scientifica che permette alcune delle
caratteristiche sopracitate è senz'altro TEX, di cui si è appena parlato e
sul quale vi è un box che ne descrive i principi architetturali.
- I linguaggi di tipo iconico (Smalltalk, GEM), invece, permettono di
affiancare al testo vere e proprie immagini. Questo può essere fatto in
quanto i computer su cui vengono utilizzati sono tutti dotati di schermi
grafici. In questo modo il testo viene convertito in BitMap (quindi
considerato alla stessa stregua di un disegno) e perciò l'inserimento di un
disegno (o parte di esso) nel testo risulta piuttosto semplice.
- Per fare ciò il sistema dovrà fornire degli apposito comandi chiamati
generalmente taglia e incolla (Cut and Paste). Questi sistemi permettono
dunque una grandissima flessibilità, ma hanno lo svantaggio di generare dei
documenti strettamente dipendenti dall'hardware utilizzato.
- Anche il problema della lettura automatica dei testi raccoglie un'ampia
bibliografia. Le sue applicazioni sono molteplici (anche se veri e propri
prodotti industriali non si vedono ancora) e vanno dall'introduzione dei
documenti nei word processor senza la necessità di battitura (ma
utilizzando una telecamera) all'estrazione automatica dagli abstract di
parole chiave per la loro classificazione, alla verifica automatica delle
firme per controllare gli assegni. Per la verità la seconda delle
applicazioni appena citate presenta un livello di complessità molto
maggiore delle altre in quanto oltre a dover riconoscere degli oggetti (le
lettere dell'alfabeto), le deve anche interpretare semanticamente e
scegliere di conseguenza quali reputare valide e quali no. ciò richiede
necessariamente il ricorso a tecniche di intelligenza artificiale per
risolvere il problema con una certa generalità e quindi rende l'oggetto
ancora "futuribile". In effetti esistono dei sistemi che
estraggono automaticamente parole significative da articoli per creare le
parole chiavi e non usano tecniche di intelligenza artificiale ma tecniche
statistiche (per esempi ola "frequenza di taglio"), ma non sono
ancora sufficientemente robusti per non richiedere successivamente una
verifica umana.
Interfaccia grafica ai Query Languages
- Già nel 1945, molto prima dell'avvento dei moderni calcolatori, V. Bush
descrisse una macchina immaginaria, Memex, basata su principi di
funzionamento meccanico e in grado di memorizzare, manipolare e recuperare
una quantità quasi infinita di dati. Nel suo articolo Bush sottolineò
anche che la mente umana opera per associazioni che seguono cammini
precostituiti e che si concentra istantaneamente su oggetti diversi non
appena ciò viene suggerito dalle associazioni.
- A quarant'anni di distanza, alcune delle visioni di Bush si sono
materializzate. Per esempio la memorizzazione di grosse quantità di dati è
un problema ormai risolto tecnologicamente. però la maggior parte dei
sistemi interattivi sono ancora incapaci di fornire una flessibilità
sufficiente per supportare effettivamente le modalità associative di
ragionamento degli utilizzatori umani. Questo perché gli utenti sono
tuttora costretti a fare uso dei linguaggi di comandi; devono cioè
introdurre da tastiera lunghe e complicate sequenze di caratteri e sono
spesso costretti a decifrare stringhe lineari di caratteri in situazioni in
cui un output grafico sarebbe senz'altro stato più efficace. Per ovviare a
ciò Frei e Jauslin hanno proposto un'interfaccia uomo-macchina per
l'information retrieval (chiamata Caliban) che supporta le modalità
associative del pensiero umano suggerendo associazioni di concetti mediante
la visualizzazione e l'"apertura" di cammini relativi al processo
di interrogazione. Entrambe le informazioni e i comandi sono strutturati a
forma di albero. Questi alberi vengono visualizzati su di un video grafico
su finestre separate e possono essere esplorati mediante comandi di
movimento. I due principali servizi offerti dal sistema permettono sia il
browsing (vedere contemporaneamente più oggetti) attraverso le strutture
informative e i singoli oggetti, che la formulazione e l'esecuzione delle
richieste.
- Frei e Jauslin hanno utilizzato la potenza espressiva della grafica per
evidenziare i cammini di ricerca e favorire le analogie e le associazioni
tipiche dell'operare umano.
- Mediante la visualizzazione contemporanea di differenti cammini di ricerca
(raffigurando alberi di ricerca in differenti finestre) si fornisce
all'utente la possibilità di saltare da un cammino di ricerca ad un altro,
in una maniera molto simile a quella che eseguiamo mentalmente, migliorando
sensibilmente l'efficacia della ricerca. In questo caso la grafica è stata
utilizzata per rappresentare (mediante una certa similarità di strutture)
l'associazione di due concetti o schemi di ricerca. Affinché ciò possa
essere realizzato in maniera efficace, il sistema deve fornire un modo
rapido per compiere graficamente queste associazioni. Perciò i due autori
hanno utilizzato un personal computer (Lilith) con una potente interfaccia
iconica (video ad alta risoluzione, mouse, ecc) che non richiede quindi
alcuna mediazione linguistica fra i desideri dell'utilizzatore e il modo per
farli eseguire dal calcolatore.
Conclusioni
- Con questa breve serie di articoli mi sono posto l'ambizioso compito di
analizzare i multiformi aspetti di una disciplina nascente, la computer
graphics e i suoi rapporti con un'altra disciplina emergente: l'automazione
d'ufficio. naturalmente questa analisi rappresenta solo l'istantanea di una
realtà così incredibilmente mutevole da sembrare talvolta addirittura
contraddittoria. Questo non per giustificare gli omissis, ma per meglio
inquadrare questo mio semplice contributo al difficile compito di stare al
passo (almeno come utenti) con la tecnologia.
- In particolare l'automazione d'ufficio sta assumendo un'importanza sempre
crescente e un ruolo sempre più pervasivo nella realtà aziendale; e non
solo automazione d'ufficio, ma anche automazione di fabbrica. E in questo
contesto la computer graphics sta emergendo sempre più prepotentemente come
strumento elettivo. E questo perché la percezione e i fenomeni visivi
giocano un ruolo strategico nella nostra conoscenza del mondo. la capacità
di cogliere relazioni tra i dati, la velocità di apprendimento, la
concisione espressiva sono solo alcune delle caratteristiche che fanno
sempre più spesso preferire mezzi visivi a mezzi linguistici. Per questo
motivo la grafica al computer, che si occupa di gestire tecnologicamente
tutto ciò che è coinvolto nel processo visivo, ha prospettive
inesauribili.
- Si pensi per esempio all'utilizzo della grafica nella gestione dei
progetti (per esempi un PERT risulta assai più utile con l'ausilio di
strumenti grafici) oppure come supporto ai sistemi esperti per costruire e/o
analizzare reti di conoscenza in cui sono rappresentati i dati e i loro
rapporti con altri dati o classi di proprietà.
- Nella realtà aziendale esistono altre attività (oltre a quelle che
abbiamo citato nel corso della rassegna) basate su un approccio di tipo
visivo. Si può citare tutto il problema dell'immagine, che va dalla scelta
di un efficace logo aziendale (vedi il recente caso della rinnovata Fiera di
Milano) fino alla più sofisticata pubblicità che utilizza un certo tipo di
immagine/presentazione per un determinato target.
- Ma le applicazioni della grafica vanno oltre e si spingono in zone della
realtà aziendale spesso dimenticate. Per esempio in alcune aziende le
direzioni del personale fanno un uso continuativo del Test di Rorschach per
la valutazione psicoattitudinale del personale. Questo test, come tutti i
test proiettivi, tende a stimolare i processi di proiezione dei soggetti
esaminati mediante la presentazione di stimoli ambigui o scarsamente
strutturati che essi sono invitati a interpretare.
- Tralasciando i presupposti metodologici, va notato che il test è
costituito da dici tavole, ciascuna composta da dieci macchie di inchiostro
bilateralmente simmetriche, che il soggetto è invitato a interpretare. Una
volta ancora l'approccio visivo viene preferito a quello testuale e
non per problemi trascurabili, ma per valutare o meno la candidabilità di
una persona all'assunzione.
Il sistema TEX
- TEX (trade mark della American Mathematical Society) è un sistema di
composizione dei testi sviluppato da Knuth presso l'università di Stanford
ed è oramai considerato uno standard per la manipolazione/stampa dei testi
tecnico scientifici. Fornisce una serie di comandi che, introdotti
all'interno di un documento, permettono sia di variarne l'aspetto (linee per
pagina, a-capo, tipo di carattere, tipo di giustificazione) che di
introdurre informazioni non testuali (tabelle, formule tecnico-scientifiche,
note musicali, semplici disegni, ecc.).
- La sua caratteristica principale è l'indipendenza dati dalla periferica
di output, ottenuta producendo il documento da stampare sotto forma di file
ASCII DVI (DeVice Independent) e perciò facilmente trasportabile. Questo
file DVI contiene i codici riguardanti le dimensioni, l'inizio e la fine di
una pagina, le coordinate di posizione dei caratteri sulla stessa, i codici
delle fonti e degli elementi ad esse inerenti, le istruzioni di separazione
ed il valore delle distanze tra parole e righe, oltre naturalmente al testo
vero e proprio. Quindi un file DVI è sostanzialmente un file testo, in cui
i normali caratteri alfabetici corrispondono al testo, mentre alcuni
caratteri speciali sono direttive a TEX. Per esempio:
- & identifica l'inizio di un comando TEX
- { delimitatore di inizio di un gruppo
- } delimitatore di fine di un gruppo
- $ delimitatore di inizio e fine di una formula
- % delimitatore di inizio di un commento
- # identificatore di parametro in una
macrodefinizione
- ^ soprascritto
- Per esempio il comando &par termina un paragrafo, il comando
&eject richiede un saltopagina mentre &sqrt disegna il simbolo di
radice quadrata.
- Per stampare il documento su una certa periferica occorrerà un
opportuno driver che interpreti i codici del DVI e costruisca l'immagine
delle pagine da stampare per punti, prendendo la rappresentazione dei
caratteri e dei componenti delle formule dalle mappe di bit (dette tabelle
VNT) generate da un linguaggio apposito, Metafont.
- Metafont è un sistema software indipendente (anche se legato a TEX nella
produzione finale del documento) che permette di generare caratteri (cioè
le fonti) da computer. Il carattere generato è costituito da una mappa di
bit che riproduce esattamente il carattere disegnato. tale mappa tiene conto
del dispositivo di uscita impiegato, sia esso una stampante (elettronica o
laser) oppure un video.
- Per fare ciò, Metafont genera diverse mappe (una per ogni tipo di
dispositivo di output) per lo stesso carattere, e l'utente può scegliere
quella desiderata in funzione della stampante o video di uscita. Per
garantire questa indipendenza dalla periferica e per fornire un'elevata
flessibilità nella definizione dei caratteri, Metafont definisce un
carattere mediante un programma scritto utilizzando dei parametri variabili.
- Questi programmi sono espressi in un linguaggio dichiarativo algebrico,
sviluppato essenzialmente per la soluzione di problemi grafici, che permette
all'utente di definire la posizione dei punti principali che compongono la
figura e che verranno interpolati con opportune funzione (gli splines)
generando il carattere. In questo modo la forma del carattere può essere
ottenuta in maniera molto precisa; infatti l'utente può apportare tutte le
modifiche che ritiene necessarie, spostando od aumentando il numero dei
punti che definiscono il carattere.
I riconoscitori di caratteri
- I riconoscitori di caratteri (on-line character recognizers) sono stati al
centro di considerevoli attività di ricerca fin dalla realizzazione, ad
opera di Teitelman nal 1964, del primo riconoscitore che
"apprende". Queste ricerche hanno determinato lo sviluppo di
un gran numero di tecniche per il riconoscimento, alcune delle quali
piuttosto ingegnose.
- fra queste, particolarmente interessante, anche per il grado di diffusione
raggiunto, è quella ideata da Ledeen, che differisce dal modello iniziale
di Teitelman per la semplicità e il risparmio sull'utilizzo delle risorse
necessarie.
- La sua struttura (come nella maggior parte dei riconoscitori) è composta
da quattro componenti:
- Una procedura di "Tablet-polling" che legge continuamente la
posizione dello stilo della tavoletta grafica (può essere benissimo
anche una penna ottica) a intervalli regolari, applica se necessario
degli smussamenti e costruisce una lista di coppie di coordinate
rappresentante ciascuna linea del carattere.
- Una procedura di "Estrazione-delle-caratteristiche" che
estrae da ciascuna linea un piccolo numero di proprietà di base, dette
"features", che costituiranno la base dell'algoritmo di
riconoscimento.
- Una procedura di "Ricerca-nel-dizionario", che ricerca nel
dizionario di caratteri un gruppo di "features" che
corrispondano a quelle delle linee appena introdotte con la tavoletta
grafica.
- Una procedura di "apprendimento" utilizzata per costruire il
dizionario.
- La procedura di "Tablet-polling" ha il compito di introdurre i
caratteri (e cioè le linee che lo costituiscono, chiamate
"Strokes") nel computer. La difficoltà sta nel decidere quando è
terminata l'introduzione di un carattere. Generalmente viene utilizzato un
Timer per individuare pause per il tracciamento delle "strokes".
Quando questa pausa eccede il mezzo secondo, il carattere viene generalmente
considerato completo.
- Le principali differenze tra i riconoscitori stanno invece nella scelta
delle "features", cioè delle caratteristiche, da estrarre dal
carattere appena introdotto. Per avere buone performances, queste
"features" devono essere facili da estrarre e compatte quando
verranno memorizzate nel dizionario. devono inoltre permettere alla
procedura di ricerca sul dizionario di discriminare facilmente tra caratteri
differenti senza discriminare tra differenti esempi dello stesso carattere.
Le caratteristiche estratte dai principali metodi sono per esempio le
regioni in cui il carattere passa, la curvatura, i cambi di direzione, i
punti di flesso e la velocità di tracciamento. C'è anche un metodo
proposto da Berson che estrae delle caratteristiche che corrispondono
efficacemente ai movimenti muscolari nel tracciamento del carattere.
- Una volta estratte le "features" verranno opportunamente
codificate e poi introdotte nel dizionario.
- Scopo quindi della procedura di ricerca è di confrontare le
caratteristiche estratte dal carattere appena letto con quelle presenti nel
dizionario. Non appena verrà individuato nel dizionario un gruppo di
caratteristiche simili, il carattere verrà riconosciuto, altrimenti il
sistema riporta un fallimento.
- Poiché questi raffronti non sono mai esatti, ma si utilizzano delle
funzioni peso per stabilire l'attendibilità, il sistema può essere reso più
esperto utilizzando la procedura di "apprendimento". Si procede
cioè in questo modo: dapprima si crea il dizionario introducendo dei
caratteri, estraendone le "features" e collocandoli nel dizionario
con il nome del carattere. Una volta che il dizionario è completo, si
prova, con la procedura di apprendimento, a far riconoscere un carattere. se
il carattere viene riconosciuto, si aumenta il peso di quel gruppo di
caratteristiche che, all'interno del dizionario, ha permesso il
riconoscimento. Altrimenti si può aggiungere al dizionario l'insieme di
caratteristiche appena estratte associandogli il nome del carattere e un
peso iniziale.
Dalla bozza alla stampa finale
- Con un Macintosh (meglio se il modello Plus da 1 MB di memoria) collegato
tramite rete Apple-Talk alla stampante LaserWriter e dotato di software
specifico per testi, grafica e disegno si possono realizzare documenti vari,
dalla semplice relazione sino al catalogo, ottenendo sia la bozza iniziale
che lo stampato finale.
- Un ruolo determinante di questo sistema - denominato AppleEdit - viene
svolto dalla stampante, che è dotata del linguaggio di programmazione
PostScript e dispone di 11 tipi di caratteri base diversi producibili con
una grafica di risoluzione pari a 300 punti per pollice. Le prestazioni del
sistema sono soprattutto apprezzate dai creativi delle agenzia pubblicitarie
e dai reparti di composizione ed impaginazione delle tipografie, dai
progettisti delle società di engineering e dagli uffici di
formazione-addestramento.
- AppleEdit viene ritenuto interessante per realizzare velocemente e senza
grandi difficoltà operative vari moduli e stampati all'interno delle
aziende (electronic publishing) con una qualità analoga a quella garantita
dalle tipografie esterne. Va infine sottolineato che con questo sistema si
può disporre di ben 35 fonti o combinazioni diverse (corsivo o neretto, ad
es.) tra quelle garantite dal Macintosh e quelle della LaserWriter.