sandy matrix rotate

by darknet
{
}

...
@author Darknet
♥0 | Line 91 | Modified 2009-06-20 03:59:30 | MIT License
play

ActionScript3 source code

/**
 * Copyright darknet ( http://wonderfl.net/user/darknet )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/yISD
 */

package  
{
	//{
	import flash.display.Sprite;
	import flash.events.Event;
	import sandy.core.data.Matrix4;
	import sandy.core.data.Point3D;
	import sandy.core.Scene3D;
	import sandy.core.scenegraph.Camera3D;
	import sandy.core.scenegraph.Group;
	import sandy.core.scenegraph.Shape3D;
	import sandy.materials.Appearance;
	import sandy.materials.attributes.LightAttributes;
	import sandy.materials.attributes.LineAttributes;
	import sandy.materials.attributes.MaterialAttributes;
	import sandy.materials.ColorMaterial;
	import sandy.materials.Material;
	import sandy.math.Matrix4Math;
	import sandy.primitive.Box;
	//}
	
	/**
	 * ...
	 * @author Darknet
	 */
	[SWF(width="300", height="300", backgroundColor="#FFFFFF", frameRate="30")]
	public class SandyMatrixBone2 extends Sprite
	{
		
		//sandy engine
		public var scene:Scene3D; // just one scene or the world
		public var camera:Camera3D; //basic one cam
		public var g:Group = new Group("myGroup");
		public var point0:Box = new Box('point0');
		public var point1:Box = new Box('point1');
		public var point2:Box = new Box('point2');
		public var point3:Box = new Box('point3');
		public var pointzero:Box = new Box('pointzero');
		public var angle:Number = 0;
		
		public function SandyMatrixBone2() {
			// camera
			camera = new Camera3D(300,300);
			camera.y = 60;
			camera.z = -60;
			camera.lookAt(0, 0, 0);
			var root:Group = g;
			scene = new Scene3D( "scene", this, camera, root );
			
			addEventListener( Event.ENTER_FRAME, enterFrameHandler );
			
			var materialAttr:MaterialAttributes = new MaterialAttributes( 
            new LineAttributes( 0.5, 0x2111BB, 0.4 ),
            new LightAttributes( true, 0.1)
            );
				
			var material:Material = new ColorMaterial( 0xFFCC33, 1, materialAttr );
			material.lightingEnable = true;
			var app:Appearance = new Appearance( material );
			point0.appearance  = app;
			
			point0.x = 16;
			point0.z = 16;
			point0.appearance  = app;
			
			point1.x = -16;
			point1.z = 16;
			point1.appearance  = app;
			
			point2.x = 16;
			point2.z = -16;
			point2.appearance  = app;
			
			point3.x = -16;
			point3.z = -16;
			point3.appearance  = app;
			
			g.addChild(point0);
			g.addChild(point1);
			g.addChild(point2);
			g.addChild(point3);
			g.addChild(pointzero);
		}
		
		// This update the code and the function when every frame is pass
		private function enterFrameHandler( event : Event ) : void {
			rotate(point0);
			rotate(point1);
			rotate(point2);
			rotate(point3);
			scene.render();
		}
		
		public function rotate(point:Shape3D):void {
			angle = 1;
			var matrix1:Matrix4;
			var matrix2:Matrix4;
			var matrix3:Matrix4;
			var matrix4:Matrix4;
			
			var point00:Point3D = new Point3D();
			
			point00.x = point.x;
			point00.y = point.y;
			point00.z = point.z;
			
			matrix2 = Matrix4Math.rotationX(angle);
			matrix3 = Matrix4Math.rotationY(angle);
			matrix4 = Matrix4Math.rotationZ(angle);
			
			//point00 = Matrix4Math.transform(matrix2, point00);
			point00 = Matrix4Math.transform(matrix3, point00);
			//point00 = Matrix4Math.transform(matrix4, point00);
			
			point.x = point00.x;
			point.y = point00.y;
			point.z = point00.z;
		}
		
	}
	
}