Black and White Circles shapevent forked:4favorite:18lines:95license : MIT License modified : 2009-09-11 10:45:20 Embed Tweet package { import flash.display.*; import flash.geom.*; import flash.events.*; [SWF(backgroundColor=0xFFFFFF, width=500, height=500)] public class BWCirc extends MovieClip { private var hsw:Number; private var hsh:Number; private var pointNum:int; private var points3D:Vector.<Number>; private var points2D:Vector.<Number>; private var uvts:Vector.<Number>; private var sorted:Array; private var thickness:Vector.<Number>; private var radii:Vector.<Number>; private var colors:Vector.<uint>; private var pnt:Point; private var m:Matrix3D; private var v:Vector3D; private var p:PerspectiveProjection; private var proj:Matrix3D; private var dx:Number; private var dy:Number; public function BWCirc(){ // init Wonderfl.disable_capture(); Wonderfl.capture_delay( 0 ); hsw = stage.stageWidth / 2; hsh = stage.stageHeight / 2; pointNum = 150; points3D = new Vector.<Number>(); points2D = new Vector.<Number>(); uvts = new Vector.<Number>(); sorted = []; thickness = new Vector.<Number>(); radii = new Vector.<Number>(); colors = new Vector.<uint>(); pnt = new Point(); m = new Matrix3D(); v = new Vector3D(); for (var i:int = 0; i<pointNum; i++){ v.x = Math.random()*1000-500; m.identity(); m.appendRotation(Math.random()*360, Vector3D.X_AXIS); m.appendRotation(Math.random()*360, Vector3D.Y_AXIS); m.appendRotation(Math.random()*360, Vector3D.Z_AXIS); v = m.transformVector(v); points3D.push(v.x, v.y, v.z); points2D.push(0,0); uvts.push(0,0,0); sorted.push({}); thickness.push(Math.random() * Math.random() * 50 + 4); radii.push(Math.random() * 100 + 10); colors.push([0xFFFFFF, 0x000000][int(Math.random()*2)]); } points3D.fixed = true; points2D.fixed = true; uvts.fixed = true; thickness.fixed = true; radii.fixed = true; colors.fixed = true;x p = new PerspectiveProjection(); proj = p.toMatrix3D(); dx = 0, dy = 0; addEventListener(Event.ENTER_FRAME, onLoop); } // private methods private function onLoop(evt:Event):void { var i:int, j:int; dx += (mouseX - dx) / 4; dy += (mouseY - dy) / 4; m.identity(); m.appendRotation(dx, Vector3D.Y_AXIS); m.appendRotation(dy, Vector3D.X_AXIS); m.appendTranslation(0, 0, 1000); m.append(proj); Utils3D.projectVectors(m, points3D, points2D, uvts); for (i = 0, j = 0; i<points2D.length; i+=2, j++){ sorted[j].x = points2D[i] + hsw; sorted[j].y = points2D[i + 1] + hsh; sorted[j].z = uvts[j * 3 + 2]; sorted[j].color = colors[j]; sorted[j].radius = radii[j]; sorted[j].thickness = thickness[j]; } sorted.sortOn("z", Array.NUMERIC); graphics.clear(); for(i = 0; i<sorted.length; i++){ var element:Object = sorted[i]; var zpos:Number = element.z * 18000; graphics.lineStyle(element.thickness, element.color); graphics.drawCircle(element.x, element.y, zpos + element.radius); graphics.endFill(); } } } } Code Fullscreen Preview Fullscreen undo Thy djankey Angelo tjoen cjcat2266 koblongata alibaba tkinjo matsumos Mae_ITR dizgid nki2 hidrodixtion.. : coolshape sazaam : B&W zmaxlin : 3D, halfmile : 3D算法3D球状旋转算法 sw_lucchini : シンプル 3D 3D, Circles, Graphics, Texture cool shape 算法 appendRotation colors identity Matrix3D Vector3D.X_AXIS Vector3D.Y_AXIS PerspectiveProjection fixed thickness Vector Vector3D.Z_AXIS append toMatrix3D transformVector sortOn appendTranslation Array.NUMERIC Utils3D.projectVectors color mouseY sort new page view favorite forked pv196 forked from: Black and White C.. 0xABCDEF forked:0 favorite:3lines:96 (diff:3) pv292 forked from: Black and White C.. bradsedito forked:1 favorite:2lines:95 (diff:93) pv154 forked from: Black and White C.. Izotopus forked:0 favorite:0lines:95 (diff:1) pv395 Colorful Circles Nicolas forked:0 favorite:2lines:96 (diff:10) tag: 3D psychedelic