Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package
- {
- import flash.display.BitmapData;
- import flash.display.Shape;
- import flash.display.Sprite;
- import flash.display.StageAlign;
- import flash.display.StageScaleMode;
- import flash.events.Event;
- import flash.geom.Matrix;
- import flash.geom.Matrix3D;
- import flash.geom.Point;
- import flash.geom.Vector3D;
- import flash.text.TextField;
- /**
- * ...
- * @author @bitetti
- */
- public class Main extends Sprite
- {
- public function Main():void
- {
- if (stage) init();
- else addEventListener(Event.ADDED_TO_STAGE, init);
- }
- private var shp:Vector.<Shape>;
- private var inf:TextField = new TextField;
- private function init(e:Event = null):void
- {
- removeEventListener(Event.ADDED_TO_STAGE, init);
- // entry point
- stage.align = StageAlign.TOP_LEFT;
- stage.scaleMode = StageScaleMode.NO_SCALE;
- this.x = stage.stageWidth / 2;
- this.y = stage.stageHeight / 2;
- makePoint(0, 0, 0, 0x000000);
- inf.selectable = inf.mouseEnabled = false;
- inf.width = 300;
- inf.height = stage.stageHeight;
- inf.y = -this.y+8;
- inf.x = -this.x+8;
- addChild(inf);
- var verbetes:Number = 20;
- var RAD:Number = Math.PI / 180;
- var SUP:Number = Math.PI * 4;
- var raiz:Number = Math.log(SUP) / Math.log(verbetes);
- var x:Number, y:Number, z:Number;
- var angX:Number = 0;
- var angY:Number = 0;
- var pass:Number = raiz / RAD;
- shp = new Vector.<Shape>(verbetes);
- for (var i:int = 0; i < verbetes; i++)
- {
- var m:Matrix3D = new Matrix3D;
- m.appendTranslation(100, 0, 0);
- m.appendRotation(angX, Vector3D.Z_AXIS);
- m.appendRotation(angY, Vector3D.X_AXIS);
- var p:Vector3D = m.transformVector(new Vector3D(0, 0, 0));
- var s:Shape = makePoint(p.x, p.y, p.z);
- shp[i]=s;
- angX += pass;
- if (angX > 360)
- {
- angX = angX %= 360;
- angY += pass;
- }
- inf.appendText( angX.toString() + " " + angY.toString() +"\n" );
- }
- addEventListener(Event.ENTER_FRAME, ani);
- }
- private var rx:Number = 0;
- private var ry:Number = 0;
- private function ani(e:Event):void
- {
- var verbetes:Number = 20;
- var RAD:Number = Math.PI / 180;
- var SUP:Number = Math.PI * 4;
- var raiz:Number = Math.log(SUP) / Math.log(verbetes);
- var x:Number, y:Number, z:Number;
- var angX:Number = 0;
- var angY:Number = 0;
- var pass:Number = raiz / RAD;
- for (var i:int = 0; i < verbetes; i++)
- {
- var m:Matrix3D = new Matrix3D;
- m.appendTranslation(100, 0, 0);
- m.appendRotation(angX+rx, Vector3D.Z_AXIS);
- m.appendRotation(angY+ry, Vector3D.Y_AXIS);
- var p:Vector3D = m.transformVector(new Vector3D(0, 0, 0));
- shp[i].x = p.x;
- shp[i].y = p.y;
- shp[i].z = p.z;
- angX += pass;
- if (angX > 360)
- {
- angX = angX %= 360;
- angY += pass;
- }
- }
- rx += 5;
- ry += 3;
- }
- private var count:uint = 0;
- private function makePoint(x:Number, y:Number, z:Number, cor:uint = 0xff0000):Shape
- {
- var s:Shape = new Shape;
- s.x = x;
- s.y = y;
- s.z = z;
- var t:TextField = new TextField;
- t.textColor = cor;
- t.text = count.toString();
- count++;
- var b:BitmapData = new BitmapData(t.width, t.height);
- b.draw(t);
- s.graphics.beginBitmapFill(b);
- s.graphics.drawRect( -b.width / 2, -b.height / 2, b.width, b.height);
- s.graphics.endFill();
- addChild(s);
- return s;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment