3Dの素

by gaziya
♥0 | Line 47 | Modified 2011-12-15 21:29:28 | 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/x0ur
 */

package {
    import flash.geom.Utils3D;
    import flash.geom.Vector3D;
    import flash.geom.PerspectiveProjection;
    import flash.geom.Matrix3D;
    import flash.events.Event;
    import flash.display.Shape;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            var shape:Shape = addChild(new Shape) as Shape
            var solid:Object = new Object
            solid.verts = new Vector.<Number>
            solid.verts.push(0,1,0,1,0,0,0,0,1,-1,0,0,0,0,-1,0,-1,0)
            solid.indices = new Vector.<int>
            solid.indices.push(0,1,2,0,2,3,0,3,4,0,4,1,5,2,1,5,3,2,5,4,3,5,1,4)
            var drawSolid:Function = function(matrix:Matrix3D,color:uint):void {
                var uvtData:Vector.<Number> = new Vector.<Number>
                var persVerts:Vector.<Number> = new Vector.<Number>
                Utils3D.projectVectors(matrix, solid.verts, persVerts, uvtData)
                persVerts.map(function(item:Number, index:int, vector:Vector.<Number>):void {
                    vector[index] += (index%2==0) ? stage.stageWidth/2 : stage.stageHeight/2
                })
                shape.graphics.lineStyle(0,color)
                shape.graphics.drawTriangles(persVerts, solid.indices, uvtData, 'negative')
            }   
            
            var pers:PerspectiveProjection = new PerspectiveProjection
            var persMatrix:Matrix3D = pers.toMatrix3D()
            var worldMatrix:Matrix3D = new Matrix3D
            var solidMatrix:Matrix3D = new Matrix3D 
            with (worldMatrix) {
                identity()
                appendTranslation(0,0,-10)
                append(persMatrix)
            }     
            with (solidMatrix) {
                identity()
                appendTranslation(0,0,0)
                append(worldMatrix)
            }
            drawSolid(solidMatrix,0x0)      

            var theta:Number= 0
            addEventListener(Event.ENTER_FRAME, function(e:Event):void {
            
            })     
            
        }
    }
}

Forked