PHP Code:
var box = {
points: [
{ x: -1 , y: -1 , z: -1 },
{ x: -1 , y: -1 , z: 1 },
{ x: 1 , y: -1 , z: 1 },
{ x: 1 , y: -1 , z: -1 },
{ x: -1 , y: 1 , z: -1 },
{ x: -1 , y: 1 , z: 1 },
{ x: 1 , y: 1 , z: 1 },
{ x: 1 , y: 1 , z: -1 }
],
faces: [
[ 0 , 3 , 2 , 1 ],
[ 4 , 5 , 6 , 7 ],
[ 1 , 5 , 4 , 0 ],
[ 7 , 6 , 2 , 3 ],
[ 0 , 4 , 7 , 3 ],
[ 6 , 5 , 1 , 2 ]
]
}
var rad = Math.PI / 180;
var my_shape:Shape = new Shape();
var dim = 200; // scale factor for unitlength obj vectors //
function World3d( obj ) {
this.obj = obj;
this.loc = scene;
rad = Math.PI / 180;
}
var pers;
function World3dRender( xa , ya ) {
// calculate rotate matrix //
var cya = Math.cos( ya * rad );
var sya = Math.sin( ya * rad );
var cxa = Math.cos( xa * rad );
var sxa = Math.sin( xa * rad );
for ( var e in box.points ) {
var p = box.points[e];
// rotate each point around axis //
var tempz = ( p.z * cya ) - ( p.x * sya );
var tmpx = ( p.z * sya ) + ( p.x * cya );
var tmpz = ( p.y * sxa ) + ( tempz * cxa );
var tmpy = ( p.y * cxa ) - ( tempz * sxa );
// projection to screen //
pers = 1 / ( 3 + tmpz );
p.sx = tmpx * pers * dim;
p.sy = tmpy * pers * dim;
}
// draw faces //
my_shape.graphics.clear();
my_shape = new Shape();
addChild(my_shape);
my_shape.x=200
my_shape.y=200
for (e in box.faces ) {
var l = box.faces[e];
p = box.points;
var p0 = p[ l[0] ] , p1 = p[ l[1] ] , p2 = p[ l[2] ] , p3 = p[ l[3] ];
var z = (p1.sx - p0.sx) * (p2.sy - p0.sy) - (p1.sy - p0.sy) * (p2.sx - p0.sx);
if ( z < 0 ) { // backface culling //
my_shape.graphics.lineStyle(1, 0x27D3DC, 1);
my_shape.graphics.beginFill ( 0x444444 );
my_shape.graphics.moveTo ( p0.sx , p0.sy );
my_shape.graphics.lineTo ( p1.sx , p1.sy );
my_shape.graphics.lineTo ( p2.sx , p2.sy );
my_shape.graphics.lineTo ( p3.sx , p3.sy );
my_shape.graphics.lineTo ( p0.sx , p0.sy );
my_shape.graphics.endFill ();
}
}
}
// create instance //
var a=0
var b=0
// render scene depending on mouse position //
addEventListener(Event.ENTER_FRAME,loop);
function loop(e:*){
World3dRender(stage.mouseY,stage.mouseX )
}