Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Campi stellari<br />
La realizzazione di un campo tridimensionale in assembly<br />
Negli ultimi tempi, non solo le pagine di <strong>Amiga</strong> <strong>Magazine</strong>,<br />
ma anche quelle di altre famose testate dedicate alla pro-<br />
grammazione, sono state letteralmente affollate di articoli<br />
che, per mezzo di equazioni, calcoli matriciali, vettori, e<br />
quant'altro la matematica moderna mette a disposizione,<br />
tentano di infondere al lettore le basi per la programmazio-<br />
ne di un Engine 3D. Purtroppo, come noto, l'attuale gene-<br />
razione di <strong>Amiga</strong>, non è particolarmente adatta alla gestio-<br />
ne della grafica 3D, sia a causa del suo sottosistema grafico<br />
orientato ai bitplane, sia per la cronica indisponibilità di<br />
CPU e memoria veloce sulla gran parte delle macchine in-<br />
stallate.<br />
Inoltre molti, per mancanza di voglia, o a causa di scarse<br />
conoscenze matematiche, non sono in grado di affrontare<br />
letture impegnative sul tracciamento di poligoni, sull'imple-<br />
mentazione dello 2-Buffer o sulle tecniche di texture, ma<br />
preferirebbero semplicemente riuscire a realizzare sul pro-<br />
prio <strong>Amiga</strong> semplici effetti tridimensionali, da utilizzare in<br />
piccole realizzazioni software, come demo, intro, ma anche<br />
effetti video, animazioni e così via. Nulla comunque esclu-<br />
de che, una volta acquisite le necessarie basi di partenza,<br />
non si possa poi appr'ofondire l'argomento grazie all'aiuto<br />
di testi o pubblicazioni specifiche.<br />
Owiamente questo articolo non si prefigge l'obiettivo di<br />
affrontare in maniera completa le problematiche relative al<br />
tracciamento di punti in uno spazio 3D, ma più semplice-<br />
mente intende dare un approccio semplice e lineare al pro-<br />
grammatore <strong>Amiga</strong> che possiede già delle minime cono-<br />
scenze di base della programmazione a livello hardware e<br />
che vuole cominciare a "masticare" del 3D realizzando un<br />
campo di stelle (pixel) che si avvicinano in direzione<br />
dell'osservatore. Come sempre, useremo il linguaggio as-<br />
sembly, che permette di avere potenza sufficiente, anche<br />
su macchine dotate di 68000 o 68020.<br />
Consigliamo anche a chi non è direttamente interessato alla<br />
creazione di campi stellari, di leggere con attenzione I'inte-<br />
ro articolo. Questo infatti può anche essere considerato un<br />
pretesto per cominciare ad avvicinare in maniera niente af-<br />
fatto teorica la grafica 3D e tecniche di programmazione<br />
particolari.<br />
L'obiettivo 1<br />
Cominciamo definendo esattamente cosa realizzare: voglia-<br />
mo avere un certo numero di punti che, originandosi nella<br />
zona centrale dello schermo (teoricamente lontano dall'os-<br />
servatore, ossia da chi guarda il monitor), sembrino awici-<br />
narsi sempre di più, fino a uscire dai bordi esterni del qua-<br />
dro. Per avere una resa migliore, in seguito faremo in mo-<br />
do di variare il colore dei pixel tracciati, così che quelli più<br />
lontani risultino più scuri, mentre quelli più vicini, appaia-<br />
no più chiari. Tutto questo per sopperire al fatto che i<br />
pixel, pur avvicinandosi, non aumentano di dimensione.<br />
Coloro che non avessero ancora ben chiaro il risultato che<br />
otterremo, pensino ad un comune videogioco spaziale 3D,<br />
nel quale la navicella del giocatore, che la osserva posteriormente,<br />
naviga in linea retta verso le profondità dello<br />
spazio, mentre le stelle, o il pulviscolo spaziale si awicinano<br />
velocemente.<br />
La teoria minima l<br />
Come è facilmente immaginabile anche da chi è completa-<br />
mente a digiuno di nozioni sulla grafica tridimensionale,<br />
ciascuna stella è costituita da un punto definito da tre coor-<br />
dinate: Xp, Xp e Zp. Xp definisce la posizione orizzontale<br />
- -<br />
del punto, da sinistra a<br />
destra; Yp quella verti-<br />
cale dall'alto verso il<br />
basso; Zp la distanza<br />
del punto dall'osserva-<br />
tore (figura 1). Lo<br />
schermo del computer<br />
si basa invece sulle sole<br />
coordinate Xs e Ys (fi-<br />
gura 2), trattandosi di<br />
un sistema bidimensio-<br />
Fig. 1 - Gli assi del<br />
mondo 30.