Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 19 di 51
  • livello principiante
Indice lezioni

Trasformazioni combinate

Risolviamo il problema delle trasformazioni singole facendo spostare l'oggetto in più direzioni senza perdere lo stato precedente
Risolviamo il problema delle trasformazioni singole facendo spostare l'oggetto in più direzioni senza perdere lo stato precedente
Link copiato negli appunti

Andiamo ora ad analizzare le trasformazioni combinate, cioè la possibilità di mettere insieme più trasformazioni inserendone una come "figlia" dell'altra.

Per capire bene questo concetto pensiamo, per esempio, di avere un piccolo oggetto attaccato alla nostra mano tramite un elastico; se muoviamo la mano in senso orizzontale l'oggetto ruoterà lungo l'elastico. In questo caso abbiamo una combinazione di due trasformazioni: la rotazione e la traslazione.

L'ordine in cui le trasformazioni vengono applicate è essenziale; se prima muoviamo l'oggetto e poi lo ruotiamo lungo un asse, il centro dell'oggetto si muoverà in maniera circolare lungo l'asse; qualora invece la rotazione fosse applicata per prima, l'oggetto ruotato si muoverebbe lungo l'asse in linea retta.

Quello che rappresenteremo nel prossimo esempio è proprio la seconda situazione, dove andremo a ruotare un cubo per muoverlo poi lungo uno o più assi:

Listato 21. ruota un cubo

// Per prima cosa creiamo i due TransformGroup
var tRot:TransformGroup = new TransformGroup();
var tTrans:TransformGroup = new TransformGroup();
// Quindi creiamo i corrispondenti oggetti Transform3D
rotation = new Transform3D();
translation = new Transform3D;
// Impostiamo la rotazione
rotation.rot(20,30,0);
// Settiamo la rotazione nel gruppo corrispondente
tRot.setTransform( rotation );
// Settiamo la traslazione nel gruppo corrispondente
tTrans.setTransform( translation );
// Aggiungiamo il cubo al gruppo di rotazione
tRot.addChild( cube );
// Aggiungiamo il gruppo di rotazione al gruppo di traslazione
tTrans.addChild(tRot);
// Quindi aggiungiamo il gruppo di traslazione al gruppo principale
bg.addChild( tTrans );

Notiamo che non è stata applicata nessuna traslazione, dato che i movimenti verranno eseguiti in base ai valori inseriti nei campi di testo e alla pressione del pulsante translateButton.

Poichè abbiamo inserito il gruppo di rotazione all'interno del gruppo di traslazione, quando sposteremo il cubo, tutto il gruppo tRot verrà spostato:

"© Petit Publications 2006" - diritti riservati

Ti consigliamo anche