Matrix3Dのテスト

by gaziya
import flash.display.AVM1Movie;
♥0 | Line 36 | Modified 2011-11-03 15:34:15 | MIT License
play

ActionScript3 source code

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

package {
    import flash.geom.Matrix3D;
    import flash.events.Event;
    import flash.geom.Vector3D;
    import flash.geom.Point;
    import flash.display.Sprite;
    [SWF(width=465,height=465,frameRate=30)]
    
    public class FlashTest extends Sprite {
        public function FlashTest() {
            var length:int = 100
            var points:Vector.<Vector3D> = new Vector.<Vector3D>()            
            points.push(new Vector3D(length,0,0))
            points.push(new Vector3D(-length,0,0))
            points.push(new Vector3D(0,length,0))
            points.push(new Vector3D(0,-length,0))
            points.push(new Vector3D(0,0,length/2))
            var degrees:Number = 0
            var axis:Vector3D = new Vector3D(1,-0.5,0)
            x = stage.stageWidth/2
            y = stage.stageHeight/2
            
            addEventListener(Event.ENTER_FRAME, loop)
            function loop(e:Event):void {
                var matrix:Matrix3D = new Matrix3D
                matrix.prependRotation(degrees,axis)
                graphics.clear()
                graphics.beginFill(0xff0000)
                for each(var value:Vector3D in points) {
                    var vector:Vector3D = matrix.transformVector(value)
                    graphics.drawCircle(vector.x,vector.y,20 - vector.z * 0.07)
                }
                degrees += 5
                degrees %= 360
            }    
        }
    }
}

Forked