Forked from: makc3d's Galaxy (Sandy 3D) diff:1 forked from: Galaxy (Sandy 3D) Razorblade forked:2favorite:0lines:65license : All rights reserved modified : 2009-05-10 07:52:51 Embed Tweet // forked from makc3d's Galaxy (Sandy 3D) // forked from makc3d's Galaxy (Pixels) package { import flash.events.Event; import flash.filters.GlowFilter; import sandy.core.*; import sandy.core.data.*; import sandy.core.scenegraph.*; import sandy.primitive.*; import sandy.materials.*; import sandy.view.*; [SWF (width=465, height=465, backgroundColor=0x0, frameRate=20)] public class Galaxy extends BasicView { private var sf:StarField; public function Galaxy() { super (); init (465, 465); camera.z = -220; sf = new StarField (); rootNode.addChild (sf); var stars:Array = []; generate (stars); generate (stars); generate (stars); generate (stars); generate (stars); generate (stars); // trying to give central stars more visibility // by placing them after other stars (works ??) stars.reverse (); for each (var obj:Object in stars) { sf.stars.push (new Vertex (obj.x, obj.y, obj.z)); sf.starColors.push (obj.c + 0x1000000 * obj.a); } render (); filters = [ new GlowFilter (0x007fff, 0.5, 30, 30, 10) ]; } override public function simpleRender(e:Event = null):void { sf.pan += 2; sf.roll += 1; super.simpleRender (e); } private function generate (stars:Array):void { // I wrote this code back in late '90s in TurboPascal // By now, I have no idea how it works, and what those magic numbers are :) var I:Number, J:Number, K:Number, s:Number, L:Number, d:Number, R:Number, dX:Number, dY:Number, dZ:Number, c2:Number; var Rm:Number = 20, A:Number = 0.3; var clr:Array = [0x0080FF, 0x8080E4, 0xB0B0FF]; for (I = 0; I < 101; I++) { A = A + 0.03; R = A * Rm; for (J = 0; J < 5 - Math.floor(I / 20); J++) { for (K = 0; K < 5; K++) { L = clr[(R > 3 * Rm * Math.random()) ? 0 : 1]; c2 = (R > 2 * Rm * Math.random()) ? 1 : 2; if (A < 0.6) L = clr[2]; s = Math.max (2, Rm - R / 3); dX = R * Math.cos(A + K * 2 * Math.PI / 5) + 0.2 * ((100 - I) * Math.random() + I / 2); dY = R * Math.sin(A + K * 2 * Math.PI / 5) + 0.2 * ((100 - I) * Math.random() + I / 2); dZ = s * (Math.random() - Math.random()); stars.push ({ x: dX, y: dY, z: dZ, c: L, a: (255 - 120 * c2) }); } } } } } } Code Fullscreen Preview Fullscreen stars generate filters pan init BasicView simpleRender roll render Vertex reverse GlowFilter Math.max Math.PI Math.floor Object push Math.cos Array Math.sin sort new page view favorite forked pv1104 forked from: forked from: Gala.. rainafter forked:2 favorite:4lines:69 (diff:10) pv534 forked from: forked from: Gala.. CVertex forked:1 favorite:1lines:65 (diff:1)