[zxspectrum] Re: Calcoli geometrici per grafica ZX

  • From: Enrico Maria Giordano <e.m.giordano@xxxxxxxxxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Tue, 2 Feb 2016 22:04:16 +0100



Il 02/02/2016 20:54, Luca Alimandi ha scritto:

Mentre scrivevo gli ultimi post, ragionavo sul fatto che a
programmare per lo Spectrum si è rimasti veramente in pochi (io mi
tiro fuori perché scrivo giusto qualche routine e metto insieme
qualche idea, per cui non credo che mi si possa definire un
programmatore per lo ZX!... :-) ).

Vero, siamo rimasti in pochi e quindi non ti puoi tirare fuori. :-)

Soprattutto mi è venuto in mente il grande sforzo profuso da Enrico
per sviluppare e migliorare le sue routine matematiche, soprattutto
dal punto di vista della precisione.

Vero, grazie. Sono proprio contento di come sono venute, sia per il loro
funzionamento, sia per la facilità di utilizzo e sia per la
documentazione che ho scritto per usarle.

Ora mi domandavo se, ai fini dello sviluppo di routine grafiche
ottimizzate, non sia più importante la *velocità *di calcolo
piuttosto che una grande *precisione*.

Ovviamente. Le mie routine non possono certo essere utilizzate per cose
veloci come l'animazione 3D. Servono routine specifiche, ottimizzate per
la precisione necessaria.

In un certo senso, penso che ci siano due diversi approcci: al fine
matematico (come ad esempio per il calcolo di immagini frattali, dove
si va a spaccare il capello scendendo a livelli inimmaginabili di
definizione) occorre privilegiare la precisione, altrimenti certi
calcoli nemmeno si possono effettuare.

Veramente, come mi è già capitato di dire, per i frattali possono essere
benissimo usati i numeri interi (ricordate FractInt com'era veloce?).

Mentre per un fine prettamente grafico (ad esempio per i giochi o per
creare un'interfaccia grafica) la precisione forse non è così
importante quanto la velocità.

Infatti. Io, se ti interessa, ho scritto alcune routine ottimizzate:

SGR - Disegna un punto
DRW - Disegna una linea
CIR - Disegna un cerchio

Usano tutte la mia speciale tabella di indirizzi video.

Da questo semplice ragionamento mi è scaturita la domanda: le routine
che, ad esempio, calcolano sin e cos per individuare i punti della
mia bella retta che ruota, possono essere ottimizzate in termini di
velocità, sapendo che lo scopo è esclusivamente calcolare la
posizione di un pixel sullo schermo e non, che so io, il punto di
atterraggio di un razzo su Marte? In sostanza, è possibile
specializzare alcuni tipi di calcoli all'utilizzo con la grafica
molto quantizzata dei pixel di uno schermo?

Sì, decisamente la cosa può essere molto ottimizzata. Basta guardarsi un po' di demo per rendersi conto dei veri e propri miracoli che riescono a fare.

Ad esempio, un approccio più "ad hoc" potrebbe essere quello
(sparo!...) di creare delle tabelle pre-calcolate, che
velocizzerebbero certi tipi di conti, come il sin e cos e la tan, o
altre cose simili... (sicuramente sto inventando l'acqua calda, ma
può essere un'occasione per imparare cose nuove!) Enrico, tu che ti
sei già cimentato in cose del genere, cosa ne pensi?

Sì, le tabelle precalcolate (o parzialmente precalcolate) credo siano una delle tecniche utilizzate. Comunque non è il mio campo, purtroppo.

EMG

--
EMAG Software Homepage: http://www.emagsoftware.it
The EMG Music page: http://www.emagsoftware.it/emgmusic
The EMG's ZX-Spectrum Page: http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: http://www.emagsoftware.it/tbosg

Other related posts: