Forked from: Kay's ケサランパサラン diff:9 forked from: ケサランパサラン chinkurosanb.. forked:0favorite:0lines:48license : All rights reserved modified : 2009-03-15 23:48:37 Embed Tweet // forked from Kay's ケサランパサラン package { import flash.display.Sprite; import flash.events.Event; import flash.geom.Matrix3D; import flash.geom.Utils3D; import flash.geom.Vector3D; [SWF(backgroundColor=0xffffff)] public class Take01 extends Sprite { private var container:Sprite; private var world:Matrix3D; private var apexes:Vector.<Number> = new Vector.<Number>(); private var uvt :Vector.<Number> = new Vector.<Number>(); private var hairNum:uint = 100; public function Take01():void { for (var i:uint = 0; i < hairNum; i++) { var anchor:Vector3D = new Vector3D( Math.random()*1000-500, Math.random()*1000-500, Math.random()*1000-500 ); var control:Vector3D = new Vector3D( anchor.x/2 + Math.random()*1000-500, anchor.y/2 + Math.random()*1000-500, anchor.z/2 + Math.random()*1000-500 ); apexes.push(control.x,control.y,control.z, anchor.x,anchor.y,anchor.z); } world = new Matrix3D(); container = new Sprite(); container.x = stage.stageWidth/2; container.y = stage.stageHeight/2; addChild(container); container.addEventListener(Event.ENTER_FRAME, rotate); } private function rotate(e:Event):void { world.appendRotation(0.5,Vector3D.X_AXIS); world.appendRotation(1.5,Vector3D.Y_AXIS); world.appendRotation(1, Vector3D.Z_AXIS); var vout:Vector.<Number> = new Vector.<Number>(); Utils3D.projectVectors(world,apexes,vout,uvt); container.graphics.clear(); container.graphics.lineStyle(0.1,0x000000,0.13); for (var i:uint = 0; i < hairNum; i++) { var sn:uint = i*4; container.graphics.moveTo(0,0); container.graphics.curveTo(vout[sn],vout[sn+1],vout[sn+2],vout[sn+3]); } } } } Code Fullscreen Preview Fullscreen Vector3D Vector3D.Z_AXIS Vector3D.Y_AXIS Vector3D.X_AXIS addEventListener push addChild Math.random Event.ENTER_FRAME uint Vector Event Sprite Number