Nei prossimi esempi andremo a usare un sistema di coordinate simile a quello appena creato, ma più trasparente, così da poterlo utilizzare come riferimento visivo senza che dia troppo fastidio.
Creiamo una funzione di nome createCoordinateSystem()
, che aggiunge assi e piani al gruppo principale:
Listato 9. Aggiunge assi e piani al gruppo principale
// Creazione del sistema di coordinate
// il valore doPlanes se settato su false fa sì che i piani non vengano disegnati
// grid imposta il numero di divisioni delle griglie ( 1 - 10 ) ( è il parametro qualità dei piani, visto in precedenza )
function createCoordinateSystem( bg:Group, doPlanes:Boolean, grid:Number ):Void {
// Creazione degli assi
var xAxis:Object3D = new Line3D( new Vector(-150,0,0), new Vector(150,0,0) );
var yAxis:Object3D = new Line3D( new Vector(0,-150,0), new Vector(0,150,0) );
var zAxis:Object3D = new Line3D( new Vector(0,0,-150), new Vector(0,0,150) );
// Colorazione degli assi
xAxis.setSkin( new SimpleLineSkin( 1, 0xff0000, 60 ) ); // rosso
yAxis.setSkin( new SimpleLineSkin( 1, 0x00ff00, 60 ) ); // verde
zAxis.setSkin( new SimpleLineSkin( 1, 0x0000ff, 60 ) ); // blu
// Crea il gruppo di assi
var axes:Group = new Group();
axes.addChild(xAxis);
axes.addChild(yAxis);
axes.addChild(zAxis);
// Aggiunge il gruppo di assi al gruppo principale
bg.addChild( axes );
// Crea i piani, se il valore di doPlanes è "true"
if( doPlanes){
var xyPlane:Object3D = new Plane3D(100,100,grid,'quad');
xyPlane.setSkin( new MixedSkin(0x00FF00, 10, 0, 15, 1));
var yzPlane:Object3D = new Plane3D(100,100,grid,'quad');
yzPlane.setSkin( new MixedSkin(0x0000FF, 10, 0, 15, 1));
var zxPlane:Object3D = new Plane3D(100,100,grid,'quad');
zxPlane.setSkin( new MixedSkin(0xFF0000, 10, 0, 15, 1));
// Imposta la rotazione per i piani xy e zy
// Ricordiamo che il piano xz non richiede trasformazioni
var tg1:TransformGroup = new TransformGroup();
var rot1:Transform3D = new Transform3D();
rot1.rot(90,0,0);
tg1.setTransform( rot1 );
tg1.addChild( xyPlane );
var tg2:TransformGroup = new TransformGroup();
var rot2:Transform3D = new Transform3D();
rot2.rot(0,0,90);
tg2.setTransform( rot2 );
tg2.addChild( yzPlane );
// Aggiungiamo i gruppi di piani trasformati al gruppo principale
bg.addChild( tg1 );
bg.addChild( tg2 );
bg.addChild( zxPlane );
}
La funzione ha tre argomenti:
- Il gruppo principale del mondo Sandy ed è ovviamente fondamentale
- Il parametro
doPlanes
che serve per dire alla funzione se creare i piani di coordinate oppure no grid
serve per impostare il numero di sezioni in cui dividere i piani stessi
Con un valore di grid pari a 1, non avremo divisioni (il massimo invece è 10). Come si può leggere anche nei commenti, tale valore corrisponde al parametro "qualità" nella creazione di un Plane3D.
"© Petit Publications 2006" - diritti riservati