forked from: forked from: flash on 2013-3-2

by ohisama forked from forked from: flash on 2013-3-2 (diff: 5)
♥0 | Line 118 | Modified 2013-03-02 12:07:30 | 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/8jwU
 */

// forked from ohisama's forked from: flash on 2013-3-2
// forked from ohisama's flash on 2013-3-2
package 
{
    import flash.display.Sprite;
    public class FlashTest extends Sprite 
    {
        private var ANGLE : Number;
        private var LPX : Number;
        private var LPY : Number;
        private var WX1 : Number;
        private var WY1 : Number;
        private var WX2 : Number;
        private var WY2 : Number;
        private var VX1 : Number;
        private var VY1 : Number;
        private var VX2 : Number;
        private var VY2 : Number;
        private var FACTX : Number;
        private var FACTY : Number;
        private var PX1 : int; 
        private var PY1 : int;
        private var PX2 : int;
        private var PY2 : int;
        public function FlashTest() 
        {
             graphics.lineStyle(1, 0xfff030);
             window(0, 0, 400, 400);
             view(0, 0, 400, 400);
             setangle(90);
             setpoint(150, 250);
             koch(7);
        }
        private function koch(i : int) : void
        {
            if (i <= 1)
            {
                gmove(8);
                return;
            }
            koch(i - 1); 
            turn(9);
            koch(i - 1);
            turn(-120);      
            koch(i - 1);
            turn(9);
            koch(i - 1); 
        }
        private function fmod(a : Number, b : Number) : Number
        {
            var x : Number = Math.floor(a / b);
            return a - b * x;
        }
        private function turn(a : int) : void
        {
            ANGLE = fmod(ANGLE + a, 360.0);
        }
        private function Cpy() : int
        {
            return PY2;
        }
        private function Cpx() : int
        {
            return PX2;
        }
        private function window(x1 : Number, y1 : Number, x2 : Number, y2 : Number) : void
        {
            WX1 = x1;
            WY1 = y1;
            WX2 = x2;
            WY2 = y2;
            FACTX = (VX2 - VX1) / (WX2 - WX1);
            FACTY = (VY2 - VY1) / (WY2 - WY1);
        }
        private function view(x1 : Number, y1 : Number, x2 : Number, y2 : Number) : void
        {
            VX1 = x1;
            VY1 = y1;
            VX2 = x2;
            VY2 = y2;
            FACTX = (VX2 - VX1) / (WX2 - WX1);
            FACTY = (VY2 - VY1) / (WY2 - WY1);
        }
        private function gline(x1 : Number, y1 : Number, x2 : Number, y2 : Number) : void
        {
            PX1 = ((x1 - WX1) * FACTX + VX1);
            PY1 = ((y1 - WY1) * FACTY + VY1);
            PX2 = ((x2 - WX1) * FACTX + VX1);
            PY2 = ((y2 - WY1) * FACTY + VY1);
            graphics.moveTo(PX1, PY1);
            graphics.lineTo(PX2, PY2);
        }
        private function gmove(l : Number) : void
        {
            var x : Number;
            var y : Number;
            var rd : Number = 3.14159265359 / 180.0;
            x = l * Math.cos(rd * ANGLE);
            y = -l * Math.sin(rd * ANGLE);
            gline(LPX, LPY, LPX + x, LPY + y);
            LPX += x;
            LPY += y;
        }
        private function gmoveTo(x : Number, y : Number) : void
        {
            gline(LPX, LPY, x, y);
            LPX = x;
            LPY = y;
        }
        private function setpoint(x : Number, y : Number) : void
        {
            LPX = x;
            LPY = y;
        }
        private function setangle(a : Number) : void 
        {
            ANGLE = a;
        }
    }
}