12.06.2013 Views

1 - Amiga Magazine Online

1 - Amiga Magazine Online

1 - Amiga Magazine Online

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!