
           AnfyVoxel 2.1 - Copyright (C) by Fabio Ciucci 1997


Questa applet puo' generare un paesaggio voxel in tempo reale.
Mi sono basato su un listato C di Andrea "6502" Griffini, che ringrazio.
Ricordatevi che sono richieste sia voxel.class che Lware.class.
Dovete uploadare sul vostro sito questi 2 file .class e aggiungere il
tag <applet> al documento html per inserire l'applet nella vostra pagina.
Questa applet e' totalmente parametrizzata, per cui si possono generare
tutti i tipi di voxel che vi interessano.
L'applet inoltre e' interattiva, infatti il movimento si puo' comandare
tramite il mouse.
Ecco un esempio di quello che va scritto hell'html (le cose dopo i ; sono
commenti con i valori minimi e massimi accettati):


<applet code="voxel.class" width=320 height=180> ; Nome, larghezza, altezza
<param name=res value="1">              ; risoluzione (1-8)
<param name=shadow value="4">           ; Fattore di ombreggiatura
<param name=roughness value="130">      ; Asprezza del terreno (50..200)
<param name=numpal value="2">           ; Tavolozza colori (1..27)
<param name=backr value="0">            ; Colore cielo, comp. rossa (0..255)
<param name=backg value="0">            ; Colore cielo, comp. verde (0..255)
<param name=backb value="0">            ; Colore cielo, comp. blu (0..255)
<param name=textscroll value="NO">      ; File per lo scrolltext o "NO"
<param name=textoffset value="140">       ; Txtscroll posizione y
<param name=textspeed value="1">          ; Txtscroll velocita'
<param name=textfont value="Arial">       ; Txtscroll nome font
<param name=textbold value="NO">          ; Txtscroll grassetto (YES - NO)
<param name=textsize value="24">          ; Txtscroll grandezza font
<param name=textshadow value="YES">       ; Txtscroll ombra ("YES" o "NO")
<param name=TextColR value="200">         ; Txtscroll colore (compon. rossa)
<param name=TextColG value="255">         ; Txtscroll colore (compon. verde)
<param name=TextColB value="190">         ; Txtscroll colore (compon. blu)
<param name=TextSColR value="20">         ; Txtscroll col. ombra (c. rossa)
<param name=TextSColG value="20">         ; Txtscroll col. ombra (c. verde)
<param name=TextSColB value="50">         ; Txtscroll col. ombra (c. blu)
<param name=TextJumpAmp value="0">        ; Txtscroll ampiezza salti
<param name=TextJumpSpd value="0">        ; Txtscroll velocita' salti
<param name=memdelay value="1000">        ; Ritardo deallocazione memoria
<param name=priority value="3">           ; Priorita' applet (1..10)
<param name=fixnetscape value="NO">       ; Correggi Netscape 3.0 (YES - NO)
Your browser doesn't suppor Java.         ; Msg nei browsers senza java
</applet>                                 ; Fine classtag


NOTA: Non mettere i "; commenti" nell'HTML finale!!!

Copia e incolla nell'html questo tag corretto e "pulito":


<applet code="voxel.class" width=320 height=180>
<param name=res value="1">
<param name=shadow value="4">
<param name=roughness value="130">
<param name=numpal value="2">
<param name=backr value="0">
<param name=backg value="0">
<param name=backb value="0">
<param name=textscroll value="NO">
<param name=textoffset value="0">
<param name=textspeed value="2">
<param name=textfont value="Arial">
<param name=textbold value="NO">
<param name=textsize value="24">
<param name=textshadow value="NO">
<param name=TextColR value="250">
<param name=TextColG value="130">
<param name=TextColB value="240">
<param name=TextSColR value="20">
<param name=TextSColG value="20">
<param name=TextSColB value="50">
<param name=TextJumpAmp value="0">
<param name=TextJumpSpd value="0">
<param name=memdelay value="1000">
<param name=priority value="3">
<param name=fixnetscape value="NO">
Spiacente, ma il tuo browser non supporta il Java
</applet>


                             ---------


Istruzioni dettagliate sul cambiamento dei parametri:


L'applet puo' essere di qualsiasi grandezza.
Se res=1, ricordati di mettere nei tab "width" e "height" la grandezza
esatta dell'immagine. Se res=2, o superiori, l'immagine sara' meno
definita (quadratoni) ma piu' veloce.
Infatti, res e' una specie di zoom.

Col parametro "shadow" si decide l'incidenza della luce: valori bassi
causano poche ombre, valori alti causano forti contrasti luce-ombra.

Con "roughness" si cambia l'asprezza del terreno: valori bassi creano
una specie di deserto di dune curvilinee, valori alti creano delle punte
montuose improvvise.

Si puo' scegliere la tavolozza colori, col parametro "numpal":

1) rosso   -> blu
2) arancio -> verde
3) verde   -> blu
4) blu     -> verde
5) verde   -> rosso
6) blu     -> rosso
7) giallo
8) giallo  -> blu
9) viola
10) rosso
11) viola   -> verde
12) rosa    -> verde
13) blu
14) blu2
15) azzurro
16) verde
17) verde2
18) grigio
19) blu     -> giallo
20) giallo
21) azzurro -> rosso
22) verde   -> viola
23) rosso
24) viola
25) grigio
26) grigio2
27) grigio3

Come vedete ci sono abbastanza colori da simulare il suolo lunare, quello
di marte, quello terrestre e cosi' via.

Con backr, backg, backb infine si puo' decidere il colore del cielo, che
puo' essere nero per marte, blu per la terra, e cosi' via.
Questi 3 parametri sono le componenti rosso, verde, blu del colore (0-255).


                             ---------


Parametri dello Scrolltext (testo scorrevole) opzionale:


Si puo' attivare opzionalmente un testo scorrevole sopra l'applet.
Se non si desidera lo scrolltext, basta disattivarlo mettendo "NO" al
parametro "textscroll".
Altrimenti occorre fornire il name di un file di testo ASCII, dove occorre
scrivere il tesco che si vuole far scorrere.
E' supportata solo una linea di testo, che puo' essere lunga quanto si
desidera.
Ricordati di uploadare (mandare sul server) anche il file di testo, se
attivi lo scrolltext!

Se e' attivato, ecco i parametri:

Con "textoffset" si sceglie lo scostamento Y rispetto alla prima linea
in alto: mettendoci 0 il testo sara' posizionato in cima, per esempio, e
mettendo un valore vicino all'altezza dell'applet sara' posizionato in
fondo.

Col parametro "textspeed" si decide la velocita' di scorrimento.

Con "textfont" si sceglie il font del testo (tipo di carattere).
Non scegliere font strane o non standard, non presenti in tutti i sistemi.
I font piu' comuni sono "Arial", "TimesRoman" e "Courier".
Se il font richiesto non e' presente, viene adottato il piu' "vicino".

Settando "textbold" a "YES" si mette il grassetto al font, che quindi
diventa un po' piu' grosso, altrimenti settandolo a "NO" si hanno i contorni
normali.

Con "textsize" si puo' cambiare la grandezza del font.
Le grandezze standard sono: 8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72.
Valori intermedi saranno scalati alla grandezza disponibile piu' vicina.

Settando "textshadow" a "YES", un'ombra sara' aggiunta al testo scorrevole.
Altrimenti, settandolo a "NO", nessuna ombra sara' "proiettata".

Puoi scegliere il colore del testo con:

TextColR = Componente rossa del colore (0-255)
TextColG = Componente verde del colore (0-255)
TextColB = Componente blu del colore (0-255)

Per esempio, 0,0,0 e' nero, 255,255,255 e' bianco, 255,0,0 e' rosso,
255,255,0 e' giallo, 128,128,128 e' grigio.
Puoi comporre qualsiasi colore, puoi cercarlo provando "a mano" o usando
il selettore/miscelatore colori di un qualsiasi programma da disegno, per
trovare le componenti di rosso, verde, blu (red, green, blue) del colore che
cerchi.

Con TextSColR,TextSColG,TextSColB puoi selezionare il colore per l'ombra
del testo.

Se si vuole, e' possibile attivare la funzione di "saltellamento" del testo.
Se "TextJumpAmp" e' settato a "0", non sara' mostrato alcun saltellamento.
Ma incrementando il valore si avra' un maggiore saltellamento.. maggiore
ampiezza = salti piu' alti.

Col parametro "TextJumpSpd" si seleziona la velocita' di saltellaggio.


                             ---------


Parametri di compatibilita':


Il parametro "memdelay" e' utile solo per far funzionare le applet senza
problemi in alcune versioni piene di bug (errori) di Netscape 3, che non
sono in grado di liberare (deallocare) correttamente la memoria occupata
precedentemente (allocata): questo porterebbe al riempimento di tutta la
memoria dopo un minuto o due che l'applet e' in esecuzione.
In certo casi questo provoca anche crash del sistema operativo.
Le ultime versioni dei browsers hanno corretto questo problema, ma se vuoi
far funzionare bene le applet anche nelle vecchie ed errate versioni dei
browsers, si puo' settare "memdelay" a valori bassi, ad esempio "10" o "16".
Questo pero' rallentera' di molto la velocita' dell'applet, quindi occorre
scegliere tra l'avere la velocita' (memdelay settato a 1000 o superiori) o
lentezza compatibile con i vecchi browsers (memdelay settato a 20 o meno).

Il parametro "priority" e' utile principalmente quando si eseguono piu' di
un'applet nella stessa pagina, e una di queste rallenta o si blocca.
Se questa applet viene eseguita troppo rallentata, o si blocca perche'
un'altra ruba tutta la potenza del processore, prova ad incrementare la
priorita'.
Altrimenti, se l'applet funziona bene e le altre sono rallentate, decrementa
la priorita'. Considera che la priorita' minima e' 1, la priorita' normale
e' 5, e la massima e' 10.
Normalmente una priorita' di 3 e' giusta per applet singole.

Il parametro "fixnetscape" e' utile solo quando l'applet e' visualizzata
con Netscape 3, sotto Win95. Infatti, tale netscape commette un errore
visualizzando l'IndexColorModel, diminuendo i colori e retinando l'immagine.
Settando "fixnetscape" a "YES", l'effetto sara' piu' lento in tutti i
browsers, ma avra' i colori corretti in Netscape 3.0.
Settandolo a "NO", l'effetto funzionera' piu' velocemente in tutti i
browser, eccetto Netscape 3.0 che li visualizzata in modo peggiore.
Da notare che Netscape 4 ed explorer non hanno questo problema.


                             ---------


Copyright e note sulla distribuzione.


Fabio Ciucci e' l'autore e proprietario di questa applet.
Puoi usare liberamente questa applet per abbellire le tue pagine web.
Pero', dato che sono l'autore, ho inserito una finestrella segreta che
apparira' se l'applet e' clickata col mouse: e' esterna al browser, percui
non danneggera' il design della tua bellissima pagina html.
Tale piccola finestrella mostra semplicemente il mio nome e chiede se si
vuole fare una visitina alla pagina delle mie applet, per poterle prendere
e usare. L'utente potra' connettersi o meno, a seconda delle sue preferenze,
dopo aver visitato il vostro stupendo sito.
In ogni caso, se il link (connect) e' accettato, sara' aperta una nuova
finestra browser, e la tua pagina rimarra' nella finestra originale, in
questo modo non "perderai" il visitatore.
Spero che questa credit part non sia un problema eccessivo per te...
Considera che userai un effetto programmato da me, senza pagare niente!




Fabio Ciucci (Randy/Ram Jam)

fabioc@anfiteatro.it

http://www.anfiteatro.it/java.html


