Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Texture mapping e <strong>Amiga</strong><br />
Il formato dei numeri in virgolajksa @te II)<br />
Nell'elaborazione di oggetti tridimensionali si ha spesso a<br />
che fare con numeri non interi. Tale tipo di dato è comu-<br />
nemente implementato nei linguaggi ad alto livello come<br />
il C, il Pasca1 o il BASIC, tramite il formato in virgola mo-<br />
bile.<br />
La notazione in virgola mobile, deriva da quella scienti-<br />
fica, che rappresenta un numero come prodotto di una<br />
parte frazionaria e di una base elevata a una potenza:<br />
dove M è la frazione o mantissa, B è la base ed E è un<br />
intero denominato esponente.<br />
Nella rappresentazione in virgola mobile sono memoriz-<br />
zati solo la mantissa e l'esponente, mentre la base è im-<br />
plicita e non viene memorizzata. La base è in genere<br />
pari a 2, mentre la mantissa è normalizzata (cioè, il bit<br />
più a sinistra è 1 in un numero non nullo) per contene-<br />
re il maggior numero possibile di cifre significative.<br />
Lo standard più diffuso per la rappresentazione dei nu-<br />
meri in virgola mobile è quello proposto dalllIEEE,<br />
adottato anche da Motoroia nei suoi coprocessori mate-<br />
matici, che definisce i due formati in singola precisione<br />
e doppia precisione. Secondo tale standard vengono<br />
memorizzati il segno del numero, l'esponente deviato e<br />
la mantissa normalizzata senza il bit a 1 di testa. Per fis-<br />
sare meglio le idee si osservi la figura 1.<br />
Fig. l - Notazione in virgola mobile<br />
secondo lo standard IEEE.<br />
lll~ilillh~l 1<br />
63 62 52 51 O<br />
Doppia prwiisione<br />
Utilizzando la notazione in virgola mobile è possibile<br />
rappresentare un ampio insieme di numeri decimali, per-<br />
dendo precisione solo quando necessario. Il rovescio<br />
della medaglia è però rappresentato dalla velocità: molti-<br />
plicazioni e divisioni sono lente, ma addizioni e sottra-<br />
zioni lo sono ancora di più. Per non parlare poi del fatto<br />
che in un motore grafico 3D, i numeri con virgola devo-<br />
no essere spesso convertiti in interi per poter essere uti-<br />
lizzati. Solo i coprocessori matematici più potenti sono<br />
probabilmente in grado di fornire la velocità necessaria,<br />
ma la scarsa diffusione ne mina inevitabilmente l'utilizza-<br />
bilità.<br />
Si ricorre allora al formato in virgola fissa con il quale è<br />
possibile rappresentare la parte intera e approssimare la<br />
parte frazionaria di un numero decimale, utilizzando un<br />
normale numero intero. Si ottiene questo risultato sem-<br />
plicemente moltiplicando il numero decimale per una co-<br />
stante intera:<br />
Dovendo operare con i numeri binari, risulta naturale uti-<br />
lizzare per K una potenza di 2, in modo da dedicare alla<br />
parte intera e a quella frazionaria un numero preciso di<br />
bit:<br />
E quindi necessario decidere in anticipo quanti bit si vo-<br />
gliono dedicare alla parte intera e quanti alla parte frazio-<br />
naria e ciò si traduce in una scarsa flessibilità di questo<br />
tipo di rappresentazione. Può infatti accadere che la par-<br />
te intera sia troppo grande per essere contenuta nel nu-<br />
mero di bit a essa dedicati, o che il numero di bit dedica-<br />
ti alla parte frazionaria sia insufficiente a rappresentarla<br />
con la necessaria precisione.<br />
I1 nostro scopo è però quello di eseguire il più veloce-<br />
mente possibile le operazioni sui numeri decimali, e le<br />
nostre esigenze di precisione non sono proprio le stesse