Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package
  2. {
  3.     import flash.display.Sprite;
  4.     import flash.events.Event;
  5.     import flash.display.GradientType
  6.     import flash.geom.Matrix
  7.     import flash.geom.Point;
  8.     import flash.geom.Rectangle;
  9.     import flash.text.TextField;
  10.     import flash.text.TextFieldAutoSize;
  11.     /**
  12.      * ...
  13.      * @author
  14.      */
  15.     public class Main extends Sprite
  16.     {
  17.         private var diag:Sprite;
  18.         private var line:Sprite;
  19.         private var radius:Number = 200;
  20.         private var deg2rad:Number = Math.PI/180;
  21.         private var rad2deg:Number = 180 / Math.PI;
  22.         private var step:Number = 30;
  23.        
  24.         public function Main():void
  25.         {
  26.             if (stage) init();
  27.             else addEventListener(Event.ADDED_TO_STAGE, init);
  28.         }
  29.        
  30.  
  31.         private function degreesToXY(radius:Number, degree:Number):Point {
  32.             var myPoint:Point = new Point()
  33.             var radians:Number=Math.PI/180;
  34.             myPoint.x = radius * Math.cos(degree*(radians));
  35.             myPoint.y = radius * Math.sin(degree*(radians));
  36.             return myPoint;
  37.         }
  38.        
  39.         private function init(e:Event = null):void
  40.         {
  41.             removeEventListener(Event.ADDED_TO_STAGE, init);
  42.             // entry point
  43.             makeDiag();
  44.             Runtime:addEventListener(Event.ENTER_FRAME, drawDiag)
  45.         }
  46.         private function makeDiag():void
  47.         {
  48.             diag = new Sprite();
  49.             addChild(diag);
  50.             diag.x = 400;
  51.             diag.y = 400
  52.             line = new Sprite();
  53.             diag.addChild(line);
  54.            
  55.         }
  56.        
  57.       private function angleDifference(a1:Number, a2:Number):Number { //in degrees
  58.              
  59.             a1 = deg2rad * a1
  60.             a2 = deg2rad * a2
  61.            
  62.                 var angle:Number = a1-a2;
  63.               if (Math.abs(angle) > Math.PI) {
  64.                       angle = angle > 0 ? angle-Math.PI*2 : Math.PI*2+angle;
  65.               }
  66.               return angle; // in radians
  67.       }
  68.        
  69.         private function drawDiag(e:Event):void
  70.         {
  71.            
  72.             line.graphics.clear();
  73.            
  74.             step = Math.max(mouseY/10, 2)
  75.             step = Math.min(step, 100)
  76.            
  77.             for (var angle:int = 0; angle < 360; angle+=step )
  78.             {
  79.                
  80.                 var p1x:Number = Math.cos(deg2rad * angle) * radius;
  81.                 var p1y:Number = Math.sin(deg2rad * angle) * radius
  82.                
  83.                 var r:Number =  Math.random() * 360            
  84.                 r =(mouseX);
  85.                
  86.                 var ang2:Number = (r - angle);
  87.                
  88.                 var p1:Point = degreesToXY(radius, angle)
  89.                 var p2:Point = degreesToXY(radius, r)
  90.  
  91.                 var len:Number = (Point.distance(p1,p2))
  92.                 // SMILY'S CODE
  93.                
  94.                 var a:Point = Point.interpolate(p1, p2, 0.5);
  95.                 var t:Point = new Point((p2.y - p1.y), -(p2.x - p1.x));
  96.                 //t.normalize(len);
  97.                 t.normalize(angleDifference(angle, r) / Math.PI * 100);
  98.                
  99.                 //t.normalize(angleDifference(angle,r));
  100.                
  101.                 a=a.add(t)
  102.                
  103.                 line.graphics.lineStyle(1, 0x00FF00, 0.5)
  104.                 line.graphics.drawCircle(a.x,a.y,3)
  105.                 line.graphics.moveTo(a.x, a.y)
  106.                 line.graphics.lineTo(p1.x, p1.y)
  107.                 line.graphics.moveTo(a.x, a.y)
  108.                 line.graphics.lineTo(p2.x,p2.y)
  109.                
  110.                 // MY CODE
  111.                 /*
  112.                 var radius2:Number = Math.min(radius, radius - Math.abs(len / 2));
  113.                 line.graphics.lineStyle(1, 0xFF6600, 1, true);
  114.                 line.graphics.drawCircle(0, 0, radius2)
  115.                
  116.                
  117.                 var midangle:Number = (r + angle) / 2;
  118.                 a=degreesToXY(radius2,midangle)
  119.                 */
  120.                
  121.                 var midPoint:Point = Point.interpolate(p1, p2, 0.5); //=> // new Point((p1.x+p2.x)/2, (p1.y+p2.y)/2)           
  122.                 /*
  123.                 line.graphics.lineStyle(1,0xFFFF00,0.6)
  124.                 line.graphics.moveTo(p1.x, p1.y)
  125.                 line.graphics.lineTo(p2.x, p2.y)
  126.                 line.graphics.moveTo(midPoint.x, midPoint.y)
  127.                 line.graphics.lineStyle(1,0x00FF00,0.4)
  128.                 line.graphics.lineTo(a.x,a.y)
  129.                 */
  130.                 //line.graphics.lineTo(0,0)
  131.                
  132.                 var mxBox:Matrix = new Matrix();               
  133.                
  134.                 //var height:Number = Math.sqrt(Math.pow(midPoint.x + a.x,2), Math.pow(midPoint.y + a.y,2)))
  135.                
  136.                 var height:Number = (Point.distance(midPoint, a));
  137.                    
  138.                 var rot:Number = Math.atan2(p2.y - p1.y, p2.x - p1.x);  
  139.  
  140.                 mxBox.createGradientBox(len, height, 0)
  141.                 mxBox.translate(0, 0 - height)
  142.                 mxBox.rotate(rot)
  143.                 mxBox.translate(p1.x, p1.y)
  144.                
  145.                
  146.                
  147.                 // draw the bezier
  148.                 line.graphics.lineStyle(2, 0, 0xFF0000,true);
  149.                 line.graphics.lineGradientStyle(GradientType.LINEAR,  [0x0000FF, 0xFF0000], [1,1], [0, 255], mxBox, "pad", "rgb");
  150.                 line.graphics.moveTo(p1.x, p1.y);
  151.                 //line.graphics.curveTo(a.x, a.y, p2.x, p2.y);
  152.  
  153.                 line.graphics.curveTo(a.x,a.y, p2.x, p2.y);
  154.  
  155.                
  156.                 // draw the triangle {p1,p2,a}
  157.                
  158.                 /*
  159.                 line.graphics.lineStyle(1, 0x00FF00, 0.4);     
  160.                
  161.                 line.graphics.moveTo(p1.x, p1.y);
  162.                 line.graphics.lineTo(p2.x, p2.y);              
  163.                
  164.                 line.graphics.moveTo(p1.x, p1.y)
  165.                 line.graphics.lineTo(a.x, a.y)
  166.                
  167.                 line.graphics.moveTo(p2.x, p2.y)
  168.                 line.graphics.lineTo(a.x, a.y)
  169.                 */
  170.                
  171.             }
  172.            
  173.             // draw the outer circle
  174.             //var circle:Sprite = new Sprite();
  175.             //circle.graphics.lineStyle(1, 0xFFFFFF, 1, true)
  176.             //circle.graphics.drawCircle(0,0,radius);
  177.             //diag.addChild(circle)
  178.             line.graphics.lineStyle(1, 0xFFFFFF, 1, true);
  179.             line.graphics.drawCircle(0,0,radius)
  180.         }
  181.        
  182.     }
  183.    
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement