LE TRASFORMAZIONI
Una trasformazione è una traslazione, una rotazione o una scala. Il disegno viene effettuato trasformando il sistema di coordinate.
Useremo una traslazione per spostare la piramide a sinistra e il cubo a destra. Senza le trasformazioni, il cubo e la piramide sarebbero uno sopra l'altra.
TRASLAZIONE
Prima di disegnare gli oggetti, iniziamo con la traslazione del centro del sistema di coordinate dove verrà disegnata la piramide. Per posizionare la piramide a sinistra, non dobbiamo far altro che traslare il sistema degli assi in questo modo:
gl.glTranslatef(xTranslation, yTranslation, zTranslation)
Per la piramide, faremo una traslazione con questi valori (-1.5f, 0.0f, -8.0f).
Il centro del sistema di coordinate verrà spostato di 1.5 unità a sinistra e di 8 unità indietro. Il motivo per cui trasliamo lungo l'asse z è che inizialmente il sistema di coordinate è sul piano vicino del volume della vista.
Per posizionare il cubo, ci sono diverse soluzioni:
- Metodo 1: traslare a destra, simmetricamente rispetto alla piramide
gl.glTranslatef(3.0f, 0.0f, 0.0f)
- Metodo 2: resettare la vista e spostare la posizione del cubo
gl.glLoadIdentity()
gl.glTranslatef(1.5f, 0.0f, zOffset)
glLoadIdentity reimposta allo stato iniziale il sistema di coordinate (cancella gli effetti delle trasformazioni)
ROTAZIONE
Per ruotare il sistema degli assi attorno al suo centro, useremo l'istruzione:
gl.glRotatef ( angolo, xAxis, yAxis, zAxis)
I parametri *Axis è un vettore unità che definisce gli assi della rotazione (ê nell'immagine). Rappresenta un vettore unità. Il parametro angolo è l'angolo di rotazione in gradi (θ nell'immagine)
Qui vogliamo che la forma ruoti attorno all'asse verticale. L'asse verticale è y, quindi la direzione è (0, 1, 0); rotPyramid rappresenta l'angolo di rotazione in gradi:
gl.glRotatef(rotPyramid, 0.0f, 1.0f, 0.0f) // rotazione attorno all'asse y
DOWLOADS SORGENTI (link al sito originale)

Nessun commento:
Posta un commento