Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package
- {
- import flash.display.Sprite;
- import flash.events.Event;
- import flash.display.GradientType
- import flash.geom.Matrix
- import flash.geom.Point;
- import flash.geom.Rectangle;
- import flash.text.TextField;
- import flash.text.TextFieldAutoSize;
- /**
- * ...
- * @author
- */
- public class Main extends Sprite
- {
- private var diag:Sprite;
- private var line:Sprite;
- private var radius:Number = 200;
- private var deg2rad:Number = Math.PI/180;
- private var rad2deg:Number = 180 / Math.PI;
- private var step:Number = 30;
- 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
- makeDiag();
- Runtime:addEventListener(Event.ENTER_FRAME, drawDiag)
- }
- private function makeDiag():void
- {
- diag = new Sprite();
- addChild(diag);
- diag.x = 400;
- diag.y = 400
- line = new Sprite();
- diag.addChild(line);
- }
- private function angleDifference(a1:Number, a2:Number):Number { //in degrees
- a1 = deg2rad * a1
- a2 = deg2rad * a2
- var angle:Number = a1-a2;
- if (Math.abs(angle) > Math.PI) {
- angle = angle > 0 ? angle-Math.PI*2 : Math.PI*2+angle;
- }
- return angle; // in radians
- }
- private function drawDiag(e:Event):void
- {
- line.graphics.clear();
- step = Math.max(mouseY/10, 2)
- step = Math.min(step, 100)
- for (var angle:int = 0; angle < 360; angle+=step )
- {
- var p1x:Number = Math.cos(deg2rad * angle) * radius;
- var p1y:Number = Math.sin(deg2rad * angle) * radius
- var r:Number = Math.random() * 360
- r =(mouseX);
- var ang2:Number = (r - angle);
- var p1:Point = degreesToXY(radius, angle)
- var p2:Point = degreesToXY(radius, r)
- var len:Number = (Point.distance(p1,p2))
- // SMILY'S CODE
- var a:Point = Point.interpolate(p1, p2, 0.5);
- var t:Point = new Point((p2.y - p1.y), -(p2.x - p1.x));
- //t.normalize(len);
- t.normalize(angleDifference(angle, r) / Math.PI * 100);
- //t.normalize(angleDifference(angle,r));
- a=a.add(t)
- line.graphics.lineStyle(1, 0x00FF00, 0.5)
- line.graphics.drawCircle(a.x,a.y,3)
- line.graphics.moveTo(a.x, a.y)
- line.graphics.lineTo(p1.x, p1.y)
- line.graphics.moveTo(a.x, a.y)
- line.graphics.lineTo(p2.x,p2.y)
- // MY CODE
- /*
- var radius2:Number = Math.min(radius, radius - Math.abs(len / 2));
- line.graphics.lineStyle(1, 0xFF6600, 1, true);
- line.graphics.drawCircle(0, 0, radius2)
- var midangle:Number = (r + angle) / 2;
- a=degreesToXY(radius2,midangle)
- */
- var midPoint:Point = Point.interpolate(p1, p2, 0.5); //=> // new Point((p1.x+p2.x)/2, (p1.y+p2.y)/2)
- /*
- line.graphics.lineStyle(1,0xFFFF00,0.6)
- line.graphics.moveTo(p1.x, p1.y)
- line.graphics.lineTo(p2.x, p2.y)
- line.graphics.moveTo(midPoint.x, midPoint.y)
- line.graphics.lineStyle(1,0x00FF00,0.4)
- line.graphics.lineTo(a.x,a.y)
- */
- //line.graphics.lineTo(0,0)
- var mxBox:Matrix = new Matrix();
- //var height:Number = Math.sqrt(Math.pow(midPoint.x + a.x,2), Math.pow(midPoint.y + a.y,2)))
- var height:Number = (Point.distance(midPoint, a));
- var rot:Number = Math.atan2(p2.y - p1.y, p2.x - p1.x);
- mxBox.createGradientBox(len, height, 0)
- mxBox.translate(0, 0 - height)
- mxBox.rotate(rot)
- mxBox.translate(p1.x, p1.y)
- // 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);
- line.graphics.curveTo(a.x,a.y, p2.x, p2.y);
- // draw the triangle {p1,p2,a}
- /*
- line.graphics.lineStyle(1, 0x00FF00, 0.4);
- 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)
- line.graphics.lineStyle(1, 0xFFFFFF, 1, true);
- line.graphics.drawCircle(0,0,radius)
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement