1. ARCHITETTURA DEI SISTEMI GRAFICI
  2. I sistemi grafici

Nel progetto dei sistemi di computer graphics si può scegliere líhardware secondo due diversi approcci. Nel primo la gestione di tutte le funzioni e le operazioni del computer, compreso líoutput della memoria di display (frame buffer), è affidata ad un solo processore, líunità centrale di elaborazione (CPU). Nel secondo approccio, líoutput della memoria di display viene affidato ad un secondo processore, líunità di elaborazione del display, o processore di display. Questo secondo processore esegue le istruzioni necessarie per visualizzare le primitive grafiche sul display, ed è provvisto di una memoria locale in cui vengono memorizzate le sequenze di istruzioni, le cosiddette display list, per la generazione delle immagini. La presenza del processore di display permette dunque di alleggerire il carico di lavoro della CPU.

Oltre alla CPU, ed eventualmente al processore di display, una workstation grafica comprende la memoria centrale ed un display, e può essere connessa, tramite una rete locale, ad altre stazioni di lavoro, file server, e altre periferiche di input e output.

Con la sola eccezione del processore di display, líhardware di un sistema grafico interattivo comprende dunque essenzialmente le stesse componenti che definiscono líarchitettura di un computer general purpose, anche se ciascuna di esse è particolarmente specializzata per la computer graphics.

Prima di addentrarci nellíanalisi dei principali dispositivi di output e input, è opportuno richiamare alcune definizioni.

La qualità delle immagini che si possono ottenere con i dispositivi di display dipende dalla dimensione dei punti e dallíindirizzabilità del dispositivo. La dimensione dei punti è data dal diametro di un singolo punto creato sul dispositivo, mentre si definisce indirizzabilità il numero di punti che possono essere creati per inch (1 inch = 2.54 cm). Formalmente, líindirizzabilità in x è definita dal reciproco della distanza tra i centri dei punti di indirizzo (xy) e (x + 1, y) rispettivamente; líindirizzabilità in y si definisce in modo del tutto analogo. Si osservi che líindirizzabilità lungo la direzione verticale può essere differente da quella lungo la direzione orizzontale. Per ottenere forme lisce è opportuno che la dimensione dei punti sia in qualche modo maggiore della loro distanza. Al contrario, con punti di piccola dimensione si può raggiungere una maggior precisione nei dettagli delle immagini. Pertanto è necessario stabilire un compromesso tra le due qualità.

Si definisce risoluzione il numero di linee distinguibili per inch che il dispositivo di output è in grado di visualizzare. Ad esempio, se 40 linee nere alternate con 40 linee bianche possono essere distinte lungo un inch, si dice che la risoluzione è di 80 linee per inch. Anche in questo caso, la risoluzione verticale può essere diversa da quella orizzontale. La risoluzione dipende dalla dimensione dei punti e dalla distribuzione della loro intensità: quando i bordi risultano nettamente delimitati, la risoluzione è maggiore. In ogni caso, essa non può essere maggiore dellíindirizzabilità. La risoluzione dei display è, generalmente, almeno dellíordine di 1000  800 pixel.

  1. Dispositivi di output grafico
  2. Il tubo a raggi catodici

Come abbiamo già avuto modo di osservare, la computer graphics interattiva richiede líuso di dispositivi di output che consentano di comunicare effettivamente con il computer, ovvero di dispositivi in grado di modificare, e anche animare, le immagini generate, e di rispondere tempestivamente alle sollecitazioni dellíutente. Il tubo a raggi catodici (CRT) è certamente uno dei dispositivi che, attualmente, meglio si prestano a soddisfare queste richieste.

I CRT monocromatici utilizzati nei display grafici non sono molti diversi da quelli utilizzati nei comuni apparecchi televisivi in bianco e nero. Il funzionamento di un CRT è basato su due fenomeni fisici: il comportamento fosforescente di alcune sostanze, che sottoposte al bombardamento di elettroni reagiscono emettendo luce, e líeffetto dei campi elettromagnetici sul movimento degli elettroni, che permette di accelerarli fino ad alte velocità, metterli a fuoco in un fascio estremamente sottile, ed indirizzarli verso una superficie fosforescente. Più precisamente, un CRT si compone di:

  • Un cannone elettronico, costituito da un cilindro metallico, ossia un catodo, che appositamente riscaldato emette elettroni.
  • Una griglia di controllo che regola il flusso di elettroni e ne controlla la direzione. Il numero di elettroni emessi è determinato dal voltaggio della griglia: più il voltaggio è negativo, minore è il numero di elettroni che andranno a colpire la superficie fosforescente. La griglia di controllo è connessa ad un amplificatore, collegato a sua volta al circuito di output del computer, che può così controllare accensione e spegnimento del fascio di elettroni.
  • Una struttura di accelerazione, composta di placche caricate positivamente, che riduce gli elettroni ad un fascio ad alta velocità. La velocità raggiunta dagli elettroni dipende dal potenziale del campo elettrostatico creato nella struttura di accelerazione, generalmente dellíordine di 15,000 ñ 20,000 volt.
  • Un sistema di messa a fuoco, che rende chiara líimmagine mettendo a fuoco gli elettroni in un fascio sottile, che può essere indirizzato verso un punto particolare dello schermo. Si osservi che non è sufficiente mantenere parallele le traiettorie degli elettroni. Il sistema di messa a fuoco deve infatti cercare di fare convergere le traiettorie per controbilanciare líeffetto della repulsione tra elettroni che tende a farle divergere.
  • Un sistema di deflessione, basato sullíeffetto di campi magnetici appositamente creati, che controlla la direzione del fascio di elettroni per muoverlo lungo lo schermo ed indirizzarlo verso il punto da colpire.
  • Uno schermo al fosforo, che emette luce visibile quando viene colpito dal fascio di elettroni.
  • Queste componenti sono tutte incluse in un tubo a vuoto di vetro, di forma conica.

    Quando gli elettroni colpiscono il rivestimento di fosforo, la loro energia cinetica viene in parte dissipata sotto forma di calore, ed in parte trasferita agli elettroni degli atomi di fosforo che, così eccitati, si spostano sui livelli quantici di energia superiori. Gli elettroni che si trovavano su livelli energetici meno stabili tornano quasi immediatamente sui livelli originari, e rilasciano líeccesso di energia sotto forma di luce; questo effetto è chiamato fluorescenza del fosforo, e si verifica durante il bombardamento del fascio elettronico. La fosforescenza è invece dovuta allíemissione di luce provocata dal ritorno degli elettroni eccitati più stabili ai loro livelli quantici originari, quando líeccitazione provocata dal fascio elettronico viene meno. Dato che líeccitazione degli elettroni e quindi la fluorescenza, dura solo qualche frazione di microsecondo, la fosforescenza è responsabile della maggior parte della luce emessa. Si osservi che la luce emessa dal fosforo è direttamente proporzionale allíintensità del fascio, di conseguenza variando il tasso di emissione degli elettroni si può modificare líintensità del punto visualizzato sullo schermo.

    Figura 2.1 Tubo a raggi catodici.

    Dato che líemissione di luce decade esponenzialmente nel tempo, le immagini prodotte sullo schermo devono essere continuamente rinfrescate (refreshed) al fine di ottenere figure stabili e ferme. Il numero di volte che occorre rinfrescare líimmagine dipende dalla persistenza del fosforo, ossia dal tempo che intercorre tra la rimozione dellíeccitazione e la riduzione della fosforescenza al 10% dellíemissione iniziale. » importante che ci sia sincronizzazione tra velocità di refresh, e persistenza del fosforo in uso, per ottenere sul CRT immagini chiare e ferme. Infatti, se la persistenza del fosforo è minore della velocità di refresh si verifica il fenomeno dello sfarfallamento (flicker), cioè le immagini appaiono lampeggianti; in caso contrario, le immagini risultano sfuocate. Generalmente la persistenza è dellíordine di qualche decina dei microsecondi, pertanto risulta necessario rinnovare le immagini ad una frequenza almeno dellíordine di 60 volte al secondo. Si definisce CFF (dallíinglese critical fusion frequency) la minima frequenza sopra la quale líimmagine appare ferma. La CFF dipende dalla persistenza, anche se in modo non lineare.

    1. Grafica vettoriale e grafica rastergrafica raster

    I primi dispositivi di output grafico basati sullíuso del CRT, erano detti vettoriali (dove il termine vettoriale è da intendersi come sinonimo di lineare). In questi dispositivi, il fascio di elettroni può muoversi direttamente da una posizione allíaltra, guidato dal computer, secondo líordine arbitrario dei comandi di display, e durante il moto traccia una linea. Chiaramente, annullando líintensità del fascio, questo può essere spostato in una nuova posizione, senza modificare líimmagine visibile sullo schermo. Questa tecnica, chiamata random scan (scansione casuale), è rimasta in uso fino agli anni settanta, quando hanno cominciato a diffondersi i sistemi di grafica raster, basati sulle tecnologia televisiva.

    Il termine raster (o ìpercorso di scansioneî) è sinonimo di matrice. Nella grafica raster, ogni immagine viene infatti rappresentata tramite una matrice di elementi, i cosiddetti pixel, ciascuno dei quali corrisponde ad una precisa porzione dellíimmagine. Líelaborazione delle immagini è dunque basata su matrici di pixel, che vengono memorizzate in uníapposita area di memoria, il frame buffer, localizzata nella memoria della CPU, o in una memoria separata. Il contenuto del frame buffer, ovvero la rappresentazione in memoria delle matrici di pixel, è chiamato pixmap (da pixel map) o bitmap. La risoluzione del frame buffer, definita dal numero di pixel che può memorizzare, determina la qualità dellíimmagine visualizzata.

    Líimmagine complessiva su un display di tipo raster si ottiene effettuando una scansione sistematica, raster scan, della matrice di pixel attraverso il fascio di elettroni, ovvero scorrendo sequenzialmente le linee di scansione orizzontali, composte da righe di pixel, una alla volta, e regolando líintensità del fascio in modo da riflettere líintensità di ciascun pixel. Ogni volta che il fascio di elettroni completa un ciclo di scansione, si dice che il CRT è ìrefreshedî.

    I principali vantaggi della grafica raster rispetto a quella vettoriale includono costi più bassi (grazie allo sviluppo tecnologico che ha reso disponibili memorie di capacità elevata a basso costo) e la possibilità di visualizzare aree piene di colore, e disegni. Uno dei principali svantaggi consiste invece nella natura intrinsecamente discreta della rappresentazione tramite pixel: le primitive grafiche (quali linee, cerchi, poligoni), devono essere convertite nelle matrici di pixel che meglio le rappresentano, per poter essere visualizzate su un display di tipo raster. Questa operazione è chiamata scan conversion. Inoltre, mentre nella grafica vettoriale è possibile disegnare curve continue tra una qualsiasi coppia di punti del CRT, la riduzione a matrici di pixel può comportare problemi di frastagliamento delle immagini.

    Naturalmente, sia nei sistemi di tipo vettoriale che in quelli raster, si pone il problema del refresh delle immagini. Nei sistemi di tipo vettoriale la frequenza a cui líoperazione viene ripetuta dipende in modo diretto dalla complessità dellíimmagine (numero di linee, punti e caratteri): maggiore è la complessità, più lungo è il tempo necessario per ridisegnare la figura. Di conseguenza, la frequenza a cui la figura può essere rinfrescata diminuisce, a discapito della sua stabilità. Nei sistemi grafici di tipo raster, invece, líintero contenuto del frame buffer viene ogni volta visualizzato (ogni pixel corrisponde ad un punto specifico sulla superficie del display); quindi líimmagine sullo schermo non viene ìdisegnataî, ma viene prodotta scorrendo le linee di scansione del raster dallíalto al basso, e poi di nuovo dallíalto al basso, ripetutamente. Dato che il tempo necessario per effettuare la scansione del raster non dipende dalla complessità delle immagini, la frequenza necessaria per evitare il flicker delle figure visualizzate risulta indipendente dalla loro complessità.

    Si definisce tasso di scansione orizzontale di un display il numero di linee di scansione che il dispositivo è in grado di visualizzare in un secondo. Esso corrisponde approssimativamente al prodotto tra la frequenza a cui vengono rinfrescate le immagini e il numero di linee di scansione.

    1. CRT a colori

    Prima di descrivere i CRT a colori, è importante premettere alcune considerazioni generali riguardanti la realizzazione di immagini a colori nella grafica raster.

    Per prima cosa, si osservi che per ottenere immagini a colori, líinformazione necessaria per visualizzare ciascun pixel non può essere contenuta in un solo bit. Sarebbe invece opportuno prevedere circa 24 bit per pixel, 8 per regolare líintensità di ciascuno dei tre colori primari. Questo è tipicamente quello che accade nei sistemi grafici RGB (dallíinglese red, green, blue), dove ci sono, concettualmente, buffer separati per le immagini rosse, verdi e blu. Ciascun pixel ha dunque componenti separate per i tre colori, corrispondenti a locazioni di memoria di un byte ciascuna. Con un sistema a 24 bit, è possibile realizzare 224 colori. Una variante del sistema RGB è il sistema a quattro colori RGBA, dove il quarto colore, chiamato canale alpha, viene utilizzato per combinare immagini e per creare effetti di opacità o trasparenza.

    Figura 2.2 Organizzazione di una look-up table.

    Nonostante i sistemi con 24 bit per pixel siano tutto sommato poco costosi, generalmente le applicazioni richiedono molto meno di 224 colori, ed inoltre è spesso desiderabile poter cambiare facilmente la colorazione da immagine a immagine e da applicazione ad applicazione, o comunque poter specificare il colore indipendentemente dal numero di bit nel frame buffer. Per queste ragioni, i controllori video dei display di tipo raster fanno spesso ricorso a delle tabelle look-up (in breve, LUT), composte da tanti elementi quanti i possibili valori dei pixel. Gli elementi di una LUT vengono utilizzati per controllare intensità e colore del CRT, ed il valore di ciascun pixel nel frame buffer non viene più usato per controllare direttamente il fascio elettronico, ma piuttosto come indice di accesso alla LUT. Líidea è quella di scegliere un numero limitato di colori da una vasta selezione. Supponiamo che il frame buffer abbia k bit per pixel, allora líindice può assumere un valore intero compreso tra 0 e 2k ñ1. Supponiamo inoltre di poter visualizzare i colori con uníaccuratezza di m bit; cioè possiamo scegliere tra 2m intensità di rosso, 2m di blu e 2m di verde. Dunque possiamo produrre 23m colori sul display, mentre il frame buffer può specificarne solo 2m. Una tabella 2k  3m consente di gestire questa situazione: le 2k righe specificano il colore desiderato. usando m bit per colore primario. Una volta che la tavola è stata costruita, ogni colore viene specificato attraverso il suo indice nella tabella. Naturalmente, dato che líoperazione di lettura della LUT viene ripetuta per ogni pixel ad ogni ciclo di visualizzazione, è importante disporre di tabelle ad accesso rapido.

    Vediamo ora come sia possibile realizzare dispositivi di output grafico che consentono di ottenere immagini a colori.

    I display raster a colori utilizzano dei CRT la cui superficie di visualizzazione è ricoperta di gruppi finemente spaziati di macchie di fosfori rossi, verdi e blu. I gruppi di macchie sono così piccoli che la luce emanata individualmente da ciascuno di essi è percepita dallíosservatore come un misto dei tre colori. In questo modo, eccitando più o meno intensamente le singole macchie, si può produrre uníampia varietà di colori.

    I CRT a colori si ottengono montando in prossimità della superficie fosforescente una piastra metallica finemente perforata, detta shadow-mask. La shadow-mask viene posizionata in modo tale che ciascuno dei tre fasci elettronici (uno per il rosso, uno per il verde, e uno per il blu) possa colpire solo macchie di fosforo di un certo tipo, rendendo così possibile líeccitazione selettiva delle macchie.

    Uno delle versioni più comuni di questo tipo di CRT è il delta-delta CRT, in cui le macchie di fosfori sono disposte in triadi triangolari, così come i tre cannoni elettronici. I fasci di elettroni vengono indirizzati verso un unico punto della superficie di visualizzazione; la shadow-mask ha un foro in corrispondenza di ciascuna triade, e i fori sono allineati sia rispetto alle triadi di macchie che ai cannoni elettronici, in modo tale che ogni singola macchia della triade sia esposta ad un solo fascio elettronico. Chiaramente, mantenere un simile allineamento risulta piuttosto difficile.

    Una sistemazione alternativa, più facile da realizzare e mantenere, è utilizzata nei precision-in-line delta CRT, che rappresentano la tecnologia più diffusa per i monitor ad alta precisione. Infine, dovrebbero presto entrare in commercio i cosiddetti flat-panel CRT, in cui i fasci di elettroni si muovono parallelamente allo schermo, e vengono ruotati di 90° per colpire la superficie di fosforo (per maggiori dettagli, si veda il testo Introduction to Computer Graphics di Foley, Van Dam, Feiner, Hughes, Phillips).

    I display provvisti di schermo di larga dimensione utilizzano dei proiettori CRT, nei quali la luce di un CRT monocromatico molto luminoso, con un diametro di qualche inch, viene amplificata e proiettata su uno schermo di dimensione maggiore. Nei sistemi a colori si utilizzano tre proiettori, con un filtro per ogni colore primario. Infine, per schermi di dimensione ancora maggiore, in cui neppure la luce emessa da un proiettore CRT risulta sufficiente, si possono utilizzare i proiettori light-valve. Un light-valve consiste in un meccanismo per regolare e controllare la quantità di luce che attraversa una valvola. Il meccanismo di base di questa tecnologia è il seguente: una fascio di elettroni traccia uníimmagine su una pellicola oleosa, posta su una superficie di vetro; la carica degli elettroni provoca delle variazioni di spessore della pellicola; una sorgente molto luminosa emette della luce, inviandola sul vetro; la luce viene rifranta dal vetro in diverse direzioni determinate dalle variazioni di spessore della pellicola, e solo la luce rifranta lungo determinate direzioni viene infine proiettata sullo schermo.

    Figura 2.3 delta-delta CRT.
    1. Altri dispositivi di output grafico

    Il recente sviluppo delle tecnologie dello stato solido ha consentito la realizzazione di dispositivi di display alternativi, che potrebbero ridurre, a lungo termine, il ruolo dominante del CRT.

    I display a cristalli liquidi (LCD) dipendono da una sorgente di luce esterna. Essi funzionano infatti polarizzando la luce dellíambiente esterno. I display a cristalli liquidi dipendono anche dalla temperatura (il loro limite operativo è compreso tra 0 e 70 gradi centigradi) e risultano piuttosto lenti, rendendo dunque difficili i lavori in animazione. Díaltro canto essi sono di basso costo, di dimensioni limitate e richiedono ben poca potenza; caratteristiche che giustificano il loro vasto impiego quali dispositivi di output grafico dei computer portatili.

    Le componenti fondamentali di un LCD sono costituite da sei strati: una lastra polarizzata verticalmente, una grata verticale di fili elettrici depositata sulla superficie adiacente ai cristalli, quindi uno strato sottile (circa 5  10ñ4inch) di cristalli liquidi, di nuovo una grata, questa volta orizzontale, di fili elettrici sulla superficie adiacente al cristallo, una lastra polarizzata orizzontalmente, ed infine un riflettore.

    Il materiale a cristalli liquidi è composto da molecole cristalline, normalmente disposte a spirale, in modo tale che la direzione di polarizzazione della luce che vi passa attraverso sia ruotata di 90°. La luce attraversa lo strato frontale, viene polarizzata verticalmente, quindi passa attraverso i cristalli liquidi e la direzione di polarizzazione viene ruotata di 90°, infine passa attraverso il polarizzatore orizzontale, viene riflessa e torna indietro attraversando i due polarizzatori e i cristalli. Quando i cristalli sono sotto líinfluenza di un campo elettrico, si allineano tutti nella stessa direzione, perdendo il loro effetto polarizzante: la luce che li attraversa rimane polarizzata verticalmente, non riesce più ad attraversare il polarizzatore orizzontale, e sul display rimane visualizzato un punto scuro. In questo modo è possibile visualizzare punti sullo schermo, attraverso un indirizzamento di tipo matriciale. Supponiamo di voler visualizzare un punto in posizione (xy). Il punto è selezionato applicando un voltaggio negativo ñV al filo elettrico x della griglia orizzontale, ed un voltaggio positivo +V al filo y di quella verticale. Líeffetto risultante è che i cristalli in posizione (xy) non sono più in grado di modificare la direzione di polarizzazione della luce trasmessa, che quindi rimane polarizzata verticalmente e assorbita. Di conseguenza, sullo schermo appare un punto scuro proprio nella posizione voluta.

    Figura 2.4 Gli strati di un LCD.

    I display LCD del tipo appena descritto sono detti passivi, per distinguerli dai cosiddetti LCD a matrice attiva, che sono provvisti di un transistor in corrispondenza di ogni posizione (xy). I transistor sono utilizzati per fare sì che i cristalli possano modificare il proprio stato più velocemente, e, allo stesso tempo, per controllare, passo per passo, il cambiamento di stato. Inoltre, i transistor possono essere usati come memoria per lo stato delle celle, e consentono di mantenere ciascuna cella in quello stato, fino alla modifica successiva. In questo modo la cella risulta più luminosa e non deve essere rinfrescata periodicamente. I cristalli possono infine essere tinti, per ottenere immagini a colori.

    I display elettroluminescenti (EL) utilizzano lo stesso tipo di struttura a grata usata nei display LCD, ma lo strato di cristalli liquidi è ora sostituito da un sottile strato (dellíordine di 500 nanometri) di plasma, ovvero materiale elettroluminescente quale ad esempio solfuro di zinco drogato con manganese, che emette luce sotto líazione di un campo elettrico (di circa 106 V/cm). Un punto sul pannello viene illuminato attraverso il sistema di indirizzamento a matrice che abbiamo già descritto, applicando voltaggi dellíordine delle centinaia di volt alle linee di selezione sulle grate. I display EL consentono di ottenere immagini, anche a colori, molto luminose; essi possono inoltre essere spenti e riaccesi molto velocemente, e i transistor piazzati in corrispondenza di ogni pixel possono essere usati per memorizzare le immagini. Si osservi inoltre che questi dispositivi non richiedono il refresh delle immagini: una volta che il pixel va in display rimane lì, finché non viene spento di proposito.

    Il maggiore svantaggio dei display EL consiste nellíelevato consumo di corrente; tuttavia líalta qualità delle immagini prodotte ne ha giustificato líuso anche in qualche calcolatore portatile.

    1. Sistemi di grafica rastergrafica raster

    Líhardware dei sistemi di grafica raster può essere organizzato secondo due diversi approcci. Nel primo la gestione di tutte le funzioni e le operazioni del computer, compreso líoutput della memoria di display, è affidata alla CPU. Nel secondo, alla CPU è affiancato un hardware specializzato, il processore di display, che esegue le istruzioni necessarie per la visualizzazione dellíoutput grafico sul display, effettua la scan conversion delle primitive di output in matrici di pixel, e modifica i pixel, o i blocchi di pixel. I vari sistemi grafici si differenziano inoltre a seconda delle potenzialità di questo processore, e dunque del suo carico di lavoro rispetto a quello della CPU. Uníulteriore differenza tra i sistemi grafici di tipo raster nasce infine dalla localizzazione del frame buffer, in cui si memorizzano le matrici di pixel, che può essere localizzato nella memoria centrale o in una memoria separata.

    1. Sistemi di grafica rastergrafica raster semplici

    I sistemi raster più comuni e più semplici sono organizzati nel modo seguente: il frame buffer è localizzato nella memoria centrale, una porzione della quale è dunque predisposta alla memorizzazione delle pixmap; un controllore video visualizza le immagini memorizzate nel frame buffer e accede alla memoria centrale attraverso una porta di accesso separata.

    Il programma applicativo e la libreria delle subroutine grafiche condividono la memoria del sistema, e sono eseguiti dalla CPU. La libreria grafica contiene le procedure per la scan conversion, in modo che quando il programma applicativo chiama una primitiva grafica, la libreria predispone i pixel appropriati nel frame buffer. Dato che il frame buffer risiede nello spazio di indirizzamento della memoria centrale, la libreria grafica vi può accedere facilmente.

    Figura 2.5 Organizzazione del controllore video.

    Il controllore video scandisce periodicamente il frame buffer, una linea alla volta, di solito circa 60 volte al secondo. La scansione raster si effettua nel seguente modo. Supponiamo che gli indirizzi del frame buffer possano variare, in orizzontale, tra 0 ed un valore massimo xmax, ed in verticale tra 0 e ymax. Ogni volta che ha inizio un ciclo di scansione, il registro X degli indirizzi di memoria lungo la direzione orizzontale viene inizializzato a 0, mentre il registro degli indirizzi sulla verticale viene inizializzato col valore ymax (che corrisponde alla linea di scansione superiore). Durante la generazione della prima linea di scansione, líindirizzo nel registro X viene incrementato, fino ad arrivare al valore xmax, ed il valore di ciascun pixel viene letto ed utilizzato per regolare líintensità del fascio di elettroni. Terminata la generazione della prima linea di scansione, líindirizzo nel registro X viene riportato al valore zero, mentre líindirizzo nel registro Y viene diminuito di una unità. Il processo si ripete fino a quando anche líultima linea (y = 0) è stata generata. In questa situazione, per visualizzare un pixel è sufficiente un solo accesso di memoria al frame buffer.

    Figura 2.6 Architettura di un sistema di grafica raster semplice.

    Per un display ad alta risoluzione di 1000 pixel per 1000 linee, da rinfrescarsi 60 volte al secondo, un pixel di un bit può essere visualizzato in circa 1/(1000  1000  60) = 16 nanosecondi. Tuttavia, i chip delle memorie RAM hanno un tempo di ciclo dellíordine di 80 nanosecondi, e non sono in grado di sostenere un accesso ogni 16 nanosecondi. Di conseguenza, il controllore video deve leggere i valori di più pixel simultaneamente, in ogni ciclo di memoria. Nel caso in esame, ad esempio, si possono leggere 16 bit per ciclo, e gestire così 16 pixel alla volta: i 16 bit sono caricati in un registro sul controllore video, e quindi richiamati, uno ogni 16 nanosecondi, per controllare il fascio di elettroni. Líoperazione richiede complessivamente 256 nanosecondi, sufficienti per tre cicli di memoria: uno per il controllore video, e due per la CPU.

    I display raster del tipo descritto hanno, come si è visto, uníarchitettura piuttosto semplice e consentono alla CPU di accedere facilmente al frame buffer. Essi sono inoltre poco costosi e facili da costruire, e per questo motivo sono usati in molti personal computer. Tuttavia, questi sistemi presentano anche alcuni svantaggi. Per prima cosa, il software per la scan conversion risulta piuttosto lento: si deve calcolare líindirizzo (xy) di ogni pixel su una linea, quindi trasformarlo in un indirizzo di accesso alla memoria, e questa operazione deve essere ripetuta molte volte. Un altro svantaggio di questo tipo di architettura è che al crescere del numero di pixel, o del tasso di refresh, il numero degli accessi alla memoria del controllore video cresce, diminuendo il numero di cicli di memoria disponibili per la CPU, che rimane inevitabilmente rallentata.

    1. Sistemi di grafica rastergrafica raster con processore di display periferico

    Un modo alternativo di organizzare un sistema di grafica raster è basato sullíarchitettura che prevede líintroduzione di un processore grafico separato, il processore di display, con il compito di gestire líesecuzione delle funzioni grafiche, quali scan conversion e operazioni raster, e di un frame buffer separato per il refresh delle immagini.

    Figura 2.7 Architettura di un sistema raster con processore di display periferico.

    Abbiamo dunque due processori, la CPU general-purpose e il processore di display special-purpose, e tre aree di memoria, la memoria centrale del sistema, la memoria del processore di display, ed il frame buffer. La memoria centrale mantiene i dati e i programmi eseguibili sulla CPU: il programma applicativo, la libreria grafica ed il sistema operativo. La memoria del processore di display mantiene dati e programmi per líesecuzione della scan conversion e delle operazioni raster. Il frame buffer contiene infine le immagini visualizzabili create tramite scan conversion e operazioni raster.

    In alcuni casi, il processore di display può gestire direttamente la trasformazione delle coordinate (xy) in indirizzi lineari di memoria. In questo caso, la scan conversion e le operazioni raster sono eseguite dalla CPU, così che la memoria del processore di display non è più necessaria, ed è presente solo il frame buffer.

    Il frame buffer Ë di 1024  1024  8 bit per pixel, e cíË una LUT di 12 bit, 4 bit ciascuno per il rosso, verde e blu. Líorigine Ë in basso a sinistra, ma solo le prime 768 righe della pixmap (per y che va da 0 a 767) sono visualizzate. Il display ha 6 registri di stato, che sono modificati dalle varie istruzioni ed influenzano líesecuzione delle altre istruzioni. Essi sono CP (formato dei registri di posizione X e Y), FILL, INDEX, WMODE, MASk e PATTERN. Il loro funzionamento Ë spiegato nel seguito.

    Alcune istruzioni per un semplice display a raster sono:

    Move(x, y) I registri X e Y che definiscono la posizione corrente (CP) sono aggiornati con x e y. PoichÈ la bitmap Ë 1024 x 1024, i valori di x e y devono essere compresi tra 0 e 1023.

    MoverR(x, y) I valori dx e dy sono sommati ai valori dei registri X e Y, definendo il nuovo CP.

    Line(x, y) disegna una linea da CP a (x, y) e questa posizione diventa il nuovo CP

    LineR(dx, dy) disegna una linea da CP a CP + (dx, dy), e questa posizione diventa il nuovo CP.

    Point(x, y) il pixel in (x, y) viene settato, e questa posizione diventa il nuovo CP.

    PointR(x, y) il pixel in CP + (x, y) viene settato, e questa posizione diventa il nuovo CP.

    Rect(x, y) disegna un rettangolo tra CP e (x, y). Il CP non cambia.

    RectR(dx, dy) disegna un rettangolo tra CP e CP + (dx, dy). Il CP non cambia.

    Text(n, address) scrive gli n caratteri che si trovano nella locazione di memoria address, a partire dalla posizione CP. I caratteri sono definiti da una griglia di pixel 79, con due pixel in più in verticale ed orizzontale per separare caratteri e linee. Il CP viene aggiornato allíangolo in basso a sinistra dellíarea in cui verrebbe scritto il carattere n+1.

    Circle(radius) disegna un cerchio con il centro in CP. Non modifica CP.

    CircleSector(radius, angle1, angle2)
    disegna un settore circolare con centro in CP, che parte dallíangolo angle1 e termine nellíangolo angle2.

    Polygon(n, address) Nella locazione address si trova una lista di vertici (x1, y1, x2, y2, Ö, xn, yn). Traccia un poligono a partire da (x1, y1), attraverso tutti i vertici fino a (x1, y1) e poi si richiude in (x1, y1). CP non cambia.

    AreaFill(flag) Il flag Ë usato per modificare il flag FILL del display. Quando il flag Ë ON, tutte le aree create dai comandi Rect, RectR, Cirlce, CircleSector, Polygon sono riempite mentre sono create, usando il pattern definito col comando Pattern.

    RasterOP(dx, dy, xdest, ydest)
    Una regione rettangolare del frame buffer, da CP a CP + (dx, dy) viene combinata con la regione della stessa dimensione con angolo in basso a sinistra (xdest, ydest), ricoprendola. La loro combinazione Ë controllata dal registro WMODE.

    Comandi e dati sono generalmente trasferiti al processore di display attraverso un buffer FIFO (ossia una coda) in una porzione dedicata dello spazio di indirizzamento della CPU. La libreria grafica trasferisce i comandi nella coda, ed il display accede alle istruzioni per eseguirle. Apposite locazione di memoria contengono puntatori allo start e allíend del buffer; il puntatore allo start viene modificato dal processore di display ogni volta che un byte è stato rimosso; il puntatore allíend è invece modificato dalla CPU ogni volta che un byte viene aggiunto. Líuso delle code risulta estremamente utile. La CPU, infatti, può liberarsi dei compiti di visualizzazione inserendo nella coda tutte le operazioni di display, e quindi procedere con líesecuzione di altri incarichi, mentre il display esegue le istruzioni e svuota la coda.

    Aumentando la funzionalità del processore di display, il carico di lavoro della CPU può essere ulteriormente alleggerito. Ad esempio, è possibile utilizzare una memoria locale per memorizzare le liste di display. In ultima analisi, questo approccio porta a considerare il processore di display come uníaltra CPU general-purpose, che gestisce tutto il lavoro grafico (per maggiori dettagli, si veda il testo Introduction to Computer Graphics di Foley, Van Dam, Feiner, Hughes, Phillips).

    Anche líarchitettura basata sul processore di display ed il frame buffer separato presenta alcuni svantaggi. Se la CPU accede al processore di display come ad una periferica su una porta di memoria ad accesso diretto, si può verificare un sovraccarico considerevole del sistema operativo ogni volta che uníistruzione vi passa attraverso (si osservi che ciò non si verifica se il registro di istruzioni del processore di display è memorizzato nello spazio di indirizzamento della CPU, perché in questo caso è facile per la libreria grafica predisporre il registro direttamente).

    Molti processori di display trasferiscono informazioni tra la memoria di sistema ed il frame buffer attraverso operazioni di I/O su un bus di sistema. Sfortunatamente questi movimenti possono risultare troppo lenti per le operazioni real-time, quali animazione, trascinamento, apertura di finestre e menu. Questo inconveniente può essere in qualche modo eliminato aumentando la memoria locale del processore di display che può così memorizzare diverse pixmap fuori campo. Tuttavia questa soluzione sottrae memoria ad altre applicazioni.

    1. Sistemi di grafica rastergrafica raster con processore di display integrato

    Molti inconvenienti dei sistemi dotati di processore di display periferico possono essere risolti dedicando una porzione speciale della memoria di sistema al frame buffer, e fornendo una seconda porta di accesso al frame buffer dal controllore video. Il processore di display, la CPU e il controllore video sono ora tutti sullo stesso bus di sistema, e possono tutti accedere alla memoria centrale. Questo tipo di architettura è detto SAS (dallíinglese single address space).

    Figura 2.8 Architettura di un sistema raster con processore di display integrato.

    I risultati della scan conversion possono essere inviati direttamente al frame buffer per essere immediatamente visualizzati, oppure alla memoria di sistema per una visualizzazione successiva. Analogamente, la sorgente e la destinazione per le operazioni raster eseguite dal processore di display possono essere in qualsiasi parte della memoria di sistema. Questa architettura è particolarmente interessante anche perché la CPU può manipolare direttamente i pixel nel frame buffer, semplicemente leggendo e scrivendo i bit appropriati.

    Nonostante alcune difficoltà di progettazione, sempre più sistemi raster hanno di fatto uníarchitettura di tipo SAS. Infatti, la flessibilità di permettere sia alla CPU che al processore di display di accedere a qualsiasi porzione di memoria in modo omogeneo e uniforme è un vantaggio notevole, che consente di semplificare molto il lavoro del programmatore.

    1. Tecnologie hardcopy

    Si definiscono hardcopy i dispositivi di output che generano immagini permanenti, quali ad esempio plotter, stampanti, film recorder. Questi dispositivi non possono essere realmente utilizzati per comunicare ed interagire con un computer, tuttavia essi risultano estremamente utili e costituiscono uníottima integrazione dei dispositivi di display basati sul CRT.

    Le stampanti a matrici di punti utilizzano una testina di stampa formata da una matrice di aghi di acciaio, ciascuno dei quali può essere mosso singolarmente per battere su un nastro di inchiostro ed impressionare il foglio di carta. La testina si muove di un passo per volta lungo il foglio di carta, quindi la carta avanza di una riga, e la testina scorre lungo la nuova riga. La stampante a matrice di punti può essere vista come un dispositivo di output di tipo raster; essa richiede la scan conversion delle immagini vettoriali, per poterne effettuare la stampa. Utilizzando nastri colorati è possibile produrre stampe a colori. A questo scopo si possono utilizzare testine di stampa multiple, una per ogni nastro, oppure una sola testina ed un nastro multicolorato. Sovrapponendo colori diversi sullo stesso punto è possibile ottenere più colori rispetto a quelli disponibili sui nastri.

    I pen plotter sono basati sui principi della grafica vettoriale: un pennino viene mosso lungo un foglio di carta in modo pressoché arbitrario. Per tracciare una linea il pennino viene posizionato al punto di partenza, abbassato in modo da toccare la carta, mosso lungo un cammino rettilineo fino a raggiungere líaltro suo estremo, quindi rialzato e posizionato sul punto di partenza della linea successiva. Nei plotter in piano il pennino viene mossa sia in direzione verticale che orizzontale su un foglio di carta steso su un tavolo e tenuto fermo. Un carrello si muove orizzontalmente lungo il tavolo. Il pennino, montato sul carrello, si muove invece verticalmente. Esso può inoltre essere alzato ed abbassato. Al contrario, i plotter a tamburo muovono la carta lungo un asse, e il pennino lungo líaltro asse. Tipicamente il foglio di carta è fissato ad un tamburo che può ruotare sia in avanti che indietro. Il tamburo è provvisto di aghi che vengono inseriti in appositi fori del foglio di carta, per impedire che questo scivoli. Nei desktop plotter il foglio di carta viene invece mosso avanti e indietro lungo rulli, mentre il pennino si muove orizzontalmente, da un lato allíaltro.

    Nelle stampanti laser un raggio laser viene fatto scorrere orizzontalmente su un tamburo rotante caricato positivamente e rivestito di selenio. Le aree colpite dal laser perdono la loro carica, e la carica positiva rimane solo dove la copia deve essere nera. Un toner in polvere caricato negativamente aderisce alle aree del tamburo caricate positivamente, e viene così trasferito sulla carta per formare la copia. Per ottenere copie a colori, questo procedimento viene ripetuto tre volte, una per ciascun colore primario. Le stampanti laser sono inoltre provviste di un microprocessore che provvede alla scan conversion delle immagini. Un numero sempre crescente di stampanti laser accetta oggi documenti PostScript che forniscono una descrizione procedurale dellíimmagine da stampare, e possono inoltre essere usati per memorizzare descrizioni di immagini.

    Le stampanti a getto díinchiostro spruzzano inchiostro colorato sulla carta. Molto spesso il dispositivo per spruzzare líinchiostro è montato su una testina che si muove orizzontalmente sul foglio di carta: disegna una linea, e quindi torna indietro mentre la carta avanza alla riga successiva. Diversamente dagli altri dispositivi, i diversi colori sono depositati simultaneamente.

    Le stampanti a trasferimento termico sono un dispositivo di tipo raster: diversi pennini finemente spaziati (di solito circa 200 per pollice) vengono riscaldati ed utilizzati per trasferire pigmenti dalla carta colorata incerata ad un normale foglio di carta. La carta incerata e il foglio sono passati insieme sulla striscia di pennini, e i pennini vengono riscaldati in modo selettivo per effettuare il trasferimento di pigmento. Questa tecnologia è utilizzata soprattutto per le stampe a colori; in questo caso la carta incerata è posta su un rullo di strisce di diversi colori (i colori primari e il nero) di lunghezza pari a quella della carta. Dato che i pennini si riscaldano e si raffreddano molto velocemente, uníimmagine monocolore può essere creata in meno di un minuto. Alcune stampanti a trasferimento termico accettano anche input provenienti da video e da bitmap digitali, e quindi possono essere utilizzate per ottenere stampe di immagini video. Esistono versioni estremamente raffinate di stampanti basate su tecniche di trasferimento termico di tinture, che consentono di utilizzare fino a 256 diverse intensità di colore e di creare immagini con una risoluzione di circa 200 punti per pollice. Queste stampanti sono naturalmente più lente di quelle che utilizzano carta incerata, ma la qualità delle copie ottenute è quasi fotografica.

    Anche una camera che riprende le immagini visualizzate su un CRT può essere considerata un dispositivo di tipo hardcopy. Ci sono due diverse tecniche per registrare immagini a colori sulla pellicola. La camera può registrare líimmagine a colori direttamente da un CRT a colori, oppure fotografare un CRT in bianco e nero usando filtri colorati. Questa seconda tecnica consente di ottenere immagini, sia raster che vettoriali, di ottima qualità, mentre nel primo caso la risoluzione dellíimmagine risulta più limitata.

    1. Il Controllore video

    Il compito principale del controllore video è quello di effettuare continuamente il refresh delle immagini sul display. Ci sono due tecniche fondamentali di refresh: líinterlacciamento e il non-interlacciamento.

    Líinterlacciamento si usa per spezzare il ciclo di refresh in due scansioni distinte, ognuna costituita dalla metà delle linee di scansione. Tipicamente, la prima scansione riguarda le linee dispari, e la seconda quelle pari. Ciascuna scansione ha la durata di 1/60 secondi; dunque, un intero refresh ha una durata di 1/30 secondi. Lo scopo di questa scansione intrecciata è quello di piazzare nuove informazioni in tutte le aree dello schermo ad una frequenza di 60 Hz, infatti un tasso di refresh di 30 Hz tende a causare flicker. Líeffetto ottenuto applicando la tecnica dellíinterlacciamento è, infatti, proprio quello di produrre una figura il cui tasso di refresh è più vicino a 60 Hz che a 30 Hz. Si osservi che questa tecnica funziona se le linee adiacenti di scansione visualizzano informazioni simili; uníimmagine composta da linee orizzontali su linee di scansione alternate, se prodotta con questa tecnica, risulta infatti affetta da sfarfallio (flicker)..

    La maggior parte dei controllori video utilizza invece la tecnica di non-interlacciamento, con un tasso di refresh dellíordine di 60 Hz.

    Líoutput di un controllore video può avere una di queste forme: RGB, monochrome, oppure video composito (NTSC o PAL). Nel caso del sistema RGB (dallíinglese red, green, blue) ci sono cavi separati per portare i segnali ai tre diversi cannoni elettronici della shadow-mask del CRT; un ulteriore cavo viene utilizzato per i segnali di sincronizzazione. Ci sono inoltre appositi standard sia per il voltaggio che per la forma díonda e il timing di sincronizzazione dei segnali RGB. Spesso i segnali per la sincronizzazione sono inclusi sullo stesso cavo del segnale verde.

    I segnali monochrome utilizzano gli stessi standard, ma hanno solo cavi di intensità e sincronizzazione, o semplicemente un unico cavo per i due tipi di segnale.

    Infine, nel segnale video NTSC (dallíinglese National Television System Committee), utilizzato dalle TV commerciali negli Stati Uniti, líinformazione relativa a colore, intensità e sincronizzazione è combinata in un unico segnale con uníampiezza di banda di circa 5 MHz.

    Uníaltra funzione molto utile del controllore video è il video mixing. Due immagini, una definita nel frame buffer e líaltra costituita da un segnale video proveniente da una telecamera, o da altre sorgenti, possono essere fuse in uníunica immagine. Questo è quanto vediamo tipicamente in alcune trasmissioni televisive (ad esempio nelle trasmissioni sportive e nelle previsioni del tempo). Ci sono due tipi di mixing. Líimmagine grafica può essere collocata in uníimmagine video, e in questo caso líhardware è predisposto in modo da utilizzare un opportuno pixel come flag per indicare se deve essere visualizzato il segnale video oppure il segnale proveniente dal frame buffer. Nel secondo tipo di mixing, invece, líimmagine video è sovrapposta allíimmagine del frame buffer.

    1. Dispositivi di input

    Un dispositivo di input può essere interpretato come dispositivo puramente meccanico, oppure come un dispositivo logico di alto livello, le cui proprietà sono caratterizzate non dalle sue caratteristiche fisiche, ma dalla sua interfaccia ad alto livello con il programma applicativo. Nella seconda visione, il dispositivo fisico attraverso il quale avviene líinput costituisce una preoccupazione minore per il programmatore. Questa separazione in dispositivi fisici e logici consente di utilizzare lo stesso dispositivo in modi assolutamente differenti, e permette ad uno stesso programma di lavorare senza modifiche anche se un dispositivo di input, ad esempio il mouse, è rimpiazzato da un altro, ad esempio da un data tablet o da un trackball.

    Nel seguito presenteremo i dispositivi di input in accordo al concetto di dispositivo logico. Da questo punto di vista, possiamo dividere i dispositivi di input in cinque classi, sulla base del tipo di informazioni che essi trasmettono al programma applicativo:

  • Dispositivi locator
  • Dispositivi pick
  • Dispositivi valuator
  • Dispositivi tastiera
  • Dispositivi scelta (choice).
    1. Dispositivi locator

    I dispositivi locator vengono utilizzati per indicare una posizione o una orientazione al programma applicativo; di solito sono implementati tramite dispositivi puntatori, quali mouse e trackball.

    Data tabletData tablet
    Un data tablet (tavoletta magnetica) è costituito da una superficie piatta, di dimensioni variabili tra i 6  6 inch, fino a 48  72 inch o più, in grado di localizzare la posizione di uno stilo movibile, utilizzato dallíutente. Generalmente si utilizza un meccanismo elettrico per determinare la posizione dello stilo: una griglia di fili elettrici è incassata nella superficie della tavoletta, e i segnali elettromagnetici generati dagli impulsi elettrici applicati ai fili della grata inducono un segnale elettrico in una bobina posta nello stilo. Líintensità del segnale indotto da ogni impulso è usata per determinare la posizione dello stilo, e anche per determinare la distanza dello stilo dalla tavola. Quando lo stilo é sufficientemente vicino alla tavola (ad esempio entro una distanza di 0.5 inch) un cursore appare sullo schermo per fornire un riscontro diretto e visuale allíutente. Se lo stilo viene premuto sulla tavoletta, un segnale viene inviato al computer.
    Diversi data tablet sono trasparenti, e possono essere montati direttamente sullo schermo di un CRT.
    I parametri rilevanti dei tablet, e più in generale dei dispositivi di tipo locator, sono risoluzione (numero di punti distinguibili per inch), linearità, ripetibilità e dimensione. Questi parametri sono cruciali per la digitazione di mappe e disegni; mentre divengono meno importanti quando il dispositivo viene utilizzato solo per posizionare il cursore sullo schermo.

    MouseMouse
    Nei mouse meccanici, il movimento di un roller posto sulla base del dispositivo è convertito in segnali digitali, che vengono usati per determinare direzione e grandezza dei movimenti. I mouse ottici utilizzano invece uno speciale tavoletta con una grata di linee alternate chiare e scure. Un diodo posizionato sotto al mouse emette un fascio luminoso sulla tavoletta, da cui viene riflesso e rilevato per mezzo di un detector. Mentre il mouse si muove, il fascio di luce riflesso viene rotto ogni volta che viene attraversata una linea scura. Si generano così degli impulsi il cui numero, pari al numero di linee attraversate, viene utilizzato per riportare i movimenti del mouse sul computer.
    Il mouse ha natura relativa, nel senso che può essere sollevato, mosso e quindi riappoggiato, senza modificarne la posizione riportata. Questo implica che il computer deve conservare la posizione attuale del mouse, e incrementarla e diminuirla in accordo ai suoi movimenti.

    TrackballTrackball
    Il trackball è un particolare mouse meccanico, in cui il moto di una pallina, che ruota liberamente allíinterno della sua locazione, è rilevato da misuratori di potenza.

    JoystickJoystick Il joystick è costituito da una leva movibile lungo due direzioni (avanti-indietro; destra-sinistra), il cui movimento è rilevato da un misuratore di potenza e tradotto in spostamenti sulle x e sulle y. Molto spesso vengono utilizzate delle molle per riportare il joystick nella sua posizione centrale. Alcuni joystick hanno anche un terzo grado di libertà: la leva può infatti ruotare in senso orario e antiorario.
    I joystick vengono utilizzati principalmente per controllare la velocità dei movimenti del cursore piuttosto che la sua posizione assoluta. Infatti, i movimenti dello stick vengono amplificati fino a cinque-dieci volte per diventare movimenti del cursore, di conseguenza i movimenti del cursore sullo schermo avvengono a scatti, e non consentono un esatto posizionamento.

    Schermi sensibili al toccoSchermi sensibili al tocco
    I dispositivi fino ad ora esaminati richiedono una propria superficie di lavoro. Al contrario, gli schermi sensibili al tocco consentono allíutente di puntare direttamente lo schermo con un dito, per muovere il cursore.
    Per realizzare questi dispositivi si possono utilizzare diverse tecnologie. Gli schermi a bassa risoluzione (da 10 a 50 posizioni in ogni direzione) usano LED infrarossi e sensori ottici (fotodiodi o fototransistor) per formare una grata invisibile di fasci ottici sullíarea di display. Toccando lo schermo vengono interrotti alcuni fasci, e in questo modo la posizione del dito può essere rilevata.
    Realizzazioni più sofisticate, basate su pannelli rivestiti da materiali conduttori e da circuiti elettronici che rilevano la posizione del dito dalle variazioni di impedenza lungo il rivestimento conduttivo, consentono di ottenere risoluzioni maggiori.
    I parametri più significativi per valutare la qualità di queste realizzazioni sono, oltre alla risoluzione, la pressione necessaria per attivarli e la trasparenza. Per questo tipo di dispositivi è inoltre importante fornire opportune forme di feedback immediato per líutente (quali emissioni sonore o evidenziazioni delle posizioni selezionate).

    1. Dispositivi pick

    I dispositivi pick, sono utilizzati per selezionare oggetti visualizzati sullo schermo, e sono implementati attraverso gli stessi dispositivi fisici utilizzati come dispositivi locator.

    1. Dispositivi valuator

    I dispositivi valuator sono utilizzati per effettuare líinput di singoli numeri reali. Sono basati su potenziometri che possono essere ruotati fino a 330°. Se si desidera una maggior risoluzione e un range più adeguato, si possono utilizzare i potenziometri a rotazione continua che possono essere ruotati liberamente in ogni direzione, e sono quindi illimitati nel range.

    1. Dispositivi tastiera

    I dispositivi tastiera consentono di effettuare líinput di stringhe di caratteri al programma applicativo. Tipicamente sono implementati attraverso una tastiera alfanumerica.

    La caratteristica funzionale delle tastiere consiste nella creazione di un codice (ad esempio il codice ASCII) che corrisponde in modo univoco a ciascun tasto premuto. Spesso può essere utile dare la possibilità di premere diversi tasti simultaneamente, in modo che líutente possa avere un rapido accesso a diversi comandi. Questo non è generalmente possibile con le tastiere coded che restituiscono un codice ASCII ad ogni pressione di un singolo tasto, mentre non restituiscono alcun codice se più tasti sono premuti simultaneamente (ad eccezione dei casi in cui i tasti addizionali sono tasti speciali, quali shift, control, etc.).

    1. Dispositivi di scelta (choice)

    I dispositivi di scelta si utilizzano per selezionare una tra un certo numero di opzioni, e sono spesso implementati tramite sistemi a finestre. Ad esempio, un menu con n selezioni agisce come un dispositivo di scleta, consentendo di selezionare una tra n alternative. I function key sono il dispositivo più comune di questa classe. Molto spesso si tratta di tasti integrati direttamente nella tastiera. Altrimenti, altri dispositivi di scleta possono essere i bottoni montati sul mouse, sui data tablet, o anche sui bordi dello schermo, così che i nomi dei tasti possono essere mostrati direttamente sullo schermo, affiancandole ai relativi bottoni fisici.

    1. Scanner di immagini

    Un photo scanner è un dispositivo che consente di ottenere immagini ad alta risoluzione. Una fotografia viene montata su un tamburo rotante. Un fascio luminoso, estremamente collimato, viene diretto sulla foto, e líammontare della luce riflessa viene misurata tramite una fotocellula. Per un negativo, la luce trasmessa viene misurata da una fotocellula allíinterno del tamburo, che è trasparente. Mentre il tamburo ruota, la sorgente luminosa si muove lentamente da un estremo allíaltro, effettuando una scansione raster dellíintera fotografia. Per le fotografie a colori, si effettuano passaggi multipli, ponendo filtri sulla fotocellula per separare i diversi colori. Gli scanner a massima risoluzione utilizzano sorgenti laser che consentono di raggiungere risoluzioni fino a 2000 unità per pollice.

    Una tecnica alternativa consiste nellíutilizzare una lunga striscia, o vettore, di telecamere charge-couple-device (CCD). Líimmagine viene digitalizzata passandola sotto il vettore di CCD. Con una singola passata, che richiede 1 o 2 minuti, è possibile digitalizzare uníimmagine di dimensioni notevoli. La risoluzione che si può ottenere con questi dispositivi può variare tra 200 e 1000 unità per pollice, ed è dunque inferiore a quella del photo scanner.