forked from: forked from: flash on 2013-3-2
forked from forked from: flash on 2013-3-2 (diff: 5)
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;
}
}
}