NOTA! Questo sito utilizza i cookie e tecnologie simili.

Se non si modificano le impostazioni del browser, l'utente accetta. Per saperne di piu'

Approvo

Capitolo 6: Un semplice esempio 2D 'finto 3D': WITU.

 

Per familiarizzare con la rappresentazione 2D di un 'universo virtuale' 3D viene qui presentata una piccola applicazione, una minimappa fornita di tre assi disposti in modo tale da rappresentare il sistema di riferimento di Java3D: Y verso l'alto, X positivo a destra e Z positivo uscente dallo schermo.

 

L'applicazione, chiamata 'WITU' (Where In The Universe), è sostanzialmente un piccolo pannello Java2D, ridimensionabile e personalizzabile, che, presi in input i valori delle coordinate X, Y e Z di un oggetto (o dell'osservatore) in un universo Java3D, mostra una sferetta in una minimappa.

 

La sferetta rappresenta proprio l'oggetto o l'osservatore, per cui l'applicazione si comporta come un pannello del tipo 'voi siete qui' (da qui, infatti, il nome WITU).

 

Nel pannello, un pallino bianco identificherà l'origine (coordinate (0.0, 0.0, 0.0)), mentre in alto a sinistra verranno mostrate le coordinate 3D 'reali' (cioè quelle in arrivo dalla Canvas3D) e un avviso di 'out of bounds'.

WITU Java 2D 3D

 

 

La lunghezza, in pixel, degli assi X e Y è pari rispettivamente a (width/10)*8 e (height/10)*8, la lunghezza dell'asse Z è calcolata mediante il teorema di Pitagora.

 

A causa delle dimensioni finite del Pannello, è possibile mostrare la posizione di un oggetto solo se questo si muove all'interno di uno spazio dalle dimensioni finite, chiamato 'bounding box'; nel nostro caso, quindi, dobbiamo definire una 'bounding size' (che poi equivarrà alla lunghezza dell'asse X, quindi la posizione 3D reale verrà tradotta, con una semplice proporzione e un paio di formule trigonometriche, in una posizione 3D in scala).

 

Serve un pò di trigonometria per calcolare le 'finte' coordinate di Z (dette, nel codice, tmpZx e tmpZy).

 

WITU Formule trigonometria proiezioni Java 2D 3D

 

Nel file sorgente 'WITU.java' sono presenti, commentate, tutte le istruzioni che permettono di simulare lo spazio 3D proiettandolo, mediante semplici formule, su di un pannello bidimensionale.

 

La classe WITU contiene semplicemente il pannello, da associare ad un'applicazione che gli invii i dati delle coordinate 3D.

Il file 'WITUapp.java', definito nella stessa pagina (prossimo articolo di questa guida) ove si trova  WITU.java, definisce appunto un piccolo moke object che crea un pannello WITU ed esegue alcune operazioni sullo stesso: sostanzialmente, invia dei valori X, Y e Z e li modifica nel tempo.

Il risultato di tali operazioni viene mostrato in tempo reale dal pannellino WITU.

 

Il lettore potrà, in seguito, incorporare WITU (che, tra l'altro, mette a disposizione metodi per la personalizzazione dell'aspetto, modificando ad esempio il colore o le etichette degli assi, modificando il colore della sfera rappresentante l'osservatore, disabilitando le scritte ecc...) nei propri progetti, senza penalizzarli in termini di performances, in quanto si tratta di una semplice applicazione 2D, non di una Canvas3D.

 

CODICE SORGENTE DELL'ESEMPIO - CLICCARE QUI

 

 
Vai all'inizio della pagina