Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package
  2. {
  3.     import com.flashdynamix.motion.extras.MatrixTransform;
  4.     import flash.display.Sprite;
  5.     import flash.events.Event;
  6.     import flash.display.GradientType
  7.     import flash.geom.Matrix
  8.     import flash.geom.Point;
  9.     import flash.text.TextField;
  10.     import flash.text.TextFieldAutoSize;
  11.     /**
  12.      * ...
  13.      * @author
  14.      */
  15.     public class Main extends Sprite
  16.     {
  17.        
  18.         public function Main():void
  19.         {
  20.             if (stage) init();
  21.             else addEventListener(Event.ADDED_TO_STAGE, init);
  22.         }
  23.        
  24.  
  25.         private function degreesToXY(radius:Number, degree:Number):Point {
  26.             var myPoint:Point = new Point()
  27.             var radians:Number=Math.PI/180;
  28.             myPoint.x = radius * Math.cos(degree*(radians));
  29.             myPoint.y = radius * Math.sin(degree*(radians));
  30.             return myPoint;
  31.         }
  32.        
  33.         private function init(e:Event = null):void
  34.         {
  35.             removeEventListener(Event.ADDED_TO_STAGE, init);
  36.             // entry point
  37.            
  38.             var diag:Sprite = new Sprite();
  39.             addChild(diag);
  40.             diag.x = 400;
  41.             diag.y = 400
  42.            
  43.             var radius:int = 250;
  44.        
  45.             var deg2rad:Number = Math.PI/180;
  46.             var rad2deg:Number = 180 / Math.PI;
  47.            
  48.             var step:Number = 60;
  49.            
  50.             //for (var a:int = 0; a < 360; a = a + 20)
  51.             for (var angle:int = 0; angle < 360; angle+=step )
  52.             {
  53.                
  54.                 var line:Sprite = new Sprite();
  55.                 diag.addChild(line);
  56.                
  57.                 var p1x:Number = Math.cos(deg2rad * angle) * radius;
  58.                 var p1y:Number = Math.sin(deg2rad * angle) * radius
  59.                
  60.                 var r:Number = Math.random() * 360
  61.                
  62.                 var ang2:Number = (r - angle);
  63.                
  64.                 var p1:Point = degreesToXY(radius, angle)
  65.                 var p2:Point = degreesToXY(radius, r)
  66.                
  67.                 var txt1:TextField = new TextField();
  68.                
  69.                 txt1.x = p1.x+8;
  70.                 txt1.y = p1.y-8;
  71.                
  72.                 txt1.backgroundColor=0xFF0000
  73.                 txt1.textColor = 0xFFFFFF
  74.                
  75.                 var txt2:TextField = new TextField();
  76.                 txt2.x = p2.x+8;
  77.                 txt2.y = p2.y-8;
  78.                
  79.                 txt2.textColor = 0xFFFFFF
  80.                 txt2.backgroundColor = 0x0000FF
  81.                 txt1.autoSize = TextFieldAutoSize.LEFT
  82.                 txt1.text = angle/step + " (begin " + Math.round(angle) + "=>"+Math.round(r) + "="+Math.round(ang2)+")"
  83.                 txt2.text = angle/step + " (end)"
  84.                
  85.                 diag.addChild(txt1);
  86.                 diag.addChild(txt2);
  87.                
  88.  
  89.                 var len:Number = Math.sqrt(Math.pow(p2.x - p1.x, 2) + (Math.pow(p2.y - p1.y, 2)))
  90.                 //var arbitraryLength:Number = len * Math.sin(deg2rad * 60)v
  91.                 var arbitraryLength:Number = 100;
  92.                 var a:Point = Point.interpolate(p1, p2, 0.5);
  93.                 var t:Point = new Point(p2.y - p1.y, -(p2.x - p1.x));
  94.                 t.normalize(arbitraryLength);
  95.    
  96.                 a = a.add(t)
  97.  
  98.                 var mxBox:Matrix = new Matrix();               
  99.                
  100.                 /*
  101.                 mxBox.createGradientBox(a.x, a.y, angle);
  102.                 mxBox.translate(p2x, p2y)
  103.                 mxBox.rotate(deg2rad * angle)
  104.                 */
  105.  
  106.                 // draw the bezier
  107.                 line.graphics.lineStyle(2, 0, 0xFF0000,true);
  108.                 line.graphics.lineGradientStyle(GradientType.LINEAR,  [0x0000FF, 0xFF0000], [1,1], [0, 255], mxBox, "pad", "rgb");
  109.                 line.graphics.moveTo(p1.x, p1.y);
  110.                 line.graphics.curveTo(a.x, a.y, p2.x, p2.y);
  111.  
  112.                 // draw the triangle {p1,p2,a}
  113.                 line.graphics.lineStyle(1, 0x00FF00, 0.2);     
  114.                
  115.                 line.graphics.moveTo(p1.x, p1.y);
  116.                 line.graphics.lineTo(p2.x, p2.y);              
  117.                
  118.                 line.graphics.moveTo(p1.x, p1.y)
  119.                 line.graphics.lineTo(a.x, a.y)
  120.                
  121.                 line.graphics.moveTo(p2.x, p2.y)
  122.                 line.graphics.lineTo(a.x, a.y)
  123.  
  124.                
  125.                 // draw the outer circle
  126.                 var circle:Sprite = new Sprite();
  127.                 circle.graphics.lineStyle(1, 0xFFFFFF, 1, true)
  128.                 circle.graphics.drawCircle(0,0,radius);
  129.                 diag.addChild(circle)
  130.             }
  131.            
  132.            
  133.            
  134.         }
  135.        
  136.     }
  137.    
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement