flash on 2013-3-2

by ohisama
♥0 | Line 55 | Modified 2013-03-02 12:54:02 | MIT License
play

ActionScript3 source code

/**
 * Copyright ohisama ( http://wonderfl.net/user/ohisama )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/cvNV
 */

package 
{
    import flash.display.Sprite;
    import flash.geom.Point;
    public class FlashTest extends Sprite 
    {
        public function FlashTest() 
        {
            var maxAngle : Number = 2 * Math.PI;
            var x : int = 200;
            var y : int = 200;
            var p1 : Point;
            var m : int = Math.random() * 20 + 3;
            var n1 : Number = Math.random() * 10;
            var n2 : Number = Math.random() * 10;
            var n3 : Number = Math.random() * 10;
            for (var i : Number = 0; i <= maxAngle; i += 0.01)  
            {
                var p2 : Point = SuperShape(m, n1, n2, n3, i);
                if (i > 0)
                {
                    graphics.lineStyle(1, 0);
                    graphics.moveTo(x + p1.x * 150, y + p1.y * 150);
                    graphics.lineTo(x + p2.x * 150, y + p2.y * 150);  
                }
                p1 = p2;
            } 
        }
        private function SuperShape(m : int, n1 : Number, n2 : Number, n3 : Number, phi : Number) : Point
        {
            var r : Number = 0;
            var t1 : Number = 0;
            var t2 : Number = 0;
            var a : Number = 1;
            var b : Number = 1;
            var x : Number = 0;
            var y : Number = 0;
            t1 = (1 / a) * Math.cos((m / 4) * phi);
            t1 = Math.abs(t1);
            t1 = Math.pow(t1, n2);
            t2 = (1 / b) * Math.sin((m / 4) * phi);
            t2 = Math.abs(t2);
            t2 = Math.pow(t2, n3);
            r = Math.pow((t1 + t2), (1 / n1));
            if (r != 0) 
            {
                r = 1 / r;
                x = r * Math.cos(phi);
                y = r * Math.sin(phi);
            }
            var p : Point = new Point(x, y);
            return p;
        }
    }
}