Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package
- {
- import com.flashdynamix.motion.extras.MatrixTransform;
- import flash.display.Sprite;
- import flash.events.Event;
- import flash.display.GradientType
- import flash.geom.Matrix
- import flash.geom.Point;
- import flash.text.TextField;
- import flash.text.TextFieldAutoSize;
- /**
- * ...
- * @author
- */
- public class Main extends Sprite
- {
- public function Main():void
- {
- if (stage) init();
- else addEventListener(Event.ADDED_TO_STAGE, init);
- }
- private function degreesToXY(radius:Number, degree:Number):Point {
- var myPoint:Point = new Point()
- var radians:Number=Math.PI/180;
- myPoint.x = radius * Math.cos(degree*(radians));
- myPoint.y = radius * Math.sin(degree*(radians));
- return myPoint;
- }
- private function init(e:Event = null):void
- {
- removeEventListener(Event.ADDED_TO_STAGE, init);
- // entry point
- var diag:Sprite = new Sprite();
- addChild(diag);
- diag.x = 400;
- diag.y = 400
- var radius:int = 250;
- var deg2rad:Number = Math.PI/180;
- var rad2deg:Number = 180 / Math.PI;
- var step:Number = 60;
- //for (var a:int = 0; a < 360; a = a + 20)
- for (var angle:int = 0; angle < 360; angle+=step )
- {
- var line:Sprite = new Sprite();
- diag.addChild(line);
- var p1x:Number = Math.cos(deg2rad * angle) * radius;
- var p1y:Number = Math.sin(deg2rad * angle) * radius
- var r:Number = Math.random() * 360
- var ang2:Number = (r - angle);
- var p1:Point = degreesToXY(radius, angle)
- var p2:Point = degreesToXY(radius, r)
- var txt1:TextField = new TextField();
- txt1.x = p1.x+8;
- txt1.y = p1.y-8;
- txt1.backgroundColor=0xFF0000
- txt1.textColor = 0xFFFFFF
- var txt2:TextField = new TextField();
- txt2.x = p2.x+8;
- txt2.y = p2.y-8;
- txt2.textColor = 0xFFFFFF
- txt2.backgroundColor = 0x0000FF
- txt1.autoSize = TextFieldAutoSize.LEFT
- txt1.text = angle/step + " (begin " + Math.round(angle) + "=>"+Math.round(r) + "="+Math.round(ang2)+")"
- txt2.text = angle/step + " (end)"
- diag.addChild(txt1);
- diag.addChild(txt2);
- var len:Number = Math.sqrt(Math.pow(p2.x - p1.x, 2) + (Math.pow(p2.y - p1.y, 2)))
- //var arbitraryLength:Number = len * Math.sin(deg2rad * 60)v
- var arbitraryLength:Number = 100;
- var a:Point = Point.interpolate(p1, p2, 0.5);
- var t:Point = new Point(p2.y - p1.y, -(p2.x - p1.x));
- t.normalize(arbitraryLength);
- a = a.add(t)
- var mxBox:Matrix = new Matrix();
- /*
- mxBox.createGradientBox(a.x, a.y, angle);
- mxBox.translate(p2x, p2y)
- mxBox.rotate(deg2rad * angle)
- */
- // draw the bezier
- line.graphics.lineStyle(2, 0, 0xFF0000,true);
- line.graphics.lineGradientStyle(GradientType.LINEAR, [0x0000FF, 0xFF0000], [1,1], [0, 255], mxBox, "pad", "rgb");
- line.graphics.moveTo(p1.x, p1.y);
- line.graphics.curveTo(a.x, a.y, p2.x, p2.y);
- // draw the triangle {p1,p2,a}
- line.graphics.lineStyle(1, 0x00FF00, 0.2);
- line.graphics.moveTo(p1.x, p1.y);
- line.graphics.lineTo(p2.x, p2.y);
- line.graphics.moveTo(p1.x, p1.y)
- line.graphics.lineTo(a.x, a.y)
- line.graphics.moveTo(p2.x, p2.y)
- line.graphics.lineTo(a.x, a.y)
- // draw the outer circle
- var circle:Sprite = new Sprite();
- circle.graphics.lineStyle(1, 0xFFFFFF, 1, true)
- circle.graphics.drawCircle(0,0,radius);
- diag.addChild(circle)
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement