//****************************************************************************************
// ファイル名:KochCurve.as   (KochCurve : コッホ曲線)
// MTASCでコンパイルして swf ファイルを作るための ActionScript によるコード
// コンパイルは mtasc -version 8 -swf KochCurve.swf -main KochCurve.as -header 400:400:30
// All rights reserved. Copyright (C) 2007 YokahiYokatoki
//****************************************************************************************
class KochCurve
{
	static function main()
	{
		var xm=200; // マージン
		var ym=200;
		var L=160; // 基本の長さ
		var pi=Math.PI/180;
		var alp=0;

		var cx=new Array();
		var cy=new Array();
		for(var k=0; k< 10; k++){cx[k]=new Array(); cy[k]=new Array();}
		cx[0][0]=-3*L/2;	cy[0][0]=0;
		cx[0][1]=-L/2;		cy[0][1]=0;
		cx[0][2]=0;			cy[0][2]=-1.7321*L/2;
		cx[0][3]=L/2;		cy[0][3]=0;
		cx[0][4]=3*L/2;		cy[0][4]=0;

		var m=new Array();
		m[0]=5;
		var kmax=5;
		for(var k=1; k< kmax; k++) //---------------------------------
		{
			m[k]=0;
			for(var j=0; j< 4; j++)
			{
				if(j==0){alp=0;} else if(j==1){alp=-60;} else if(j==2){alp=60;} else if(j==3){alp=0;}
				for(var i=0; i< m[k-1]; i++)
				{
					cx[k][m[k]]=cx[k-1][i]/3*Math.cos(pi*alp)-cy[k-1][i]/3*Math.sin(pi*alp)+(cx[0][j]+cx[0][j+1])/2;
					cy[k][m[k]]=cx[k-1][i]/3*Math.sin(pi*alp)+cy[k-1][i]/3*Math.cos(pi*alp)+(cy[0][j]+cy[0][j+1])/2;
					m[k]++;
				}
			}
		}

		var ax=new Array();
		var ay=new Array();
		var k=kmax-1;
		var t=0;
		_root.waiting=setInterval(function()
		{
			for(var i=0; i< m[k]; i++)
			{
				var xx=cx[k][i]*Math.cos(pi*t)-cy[k][i]*Math.sin(pi*t);
				var yy=cx[k][i]*Math.sin(pi*t)+cy[k][i]*Math.cos(pi*t);
				ax[i]=xx*(1+t/30)+3*L/4-3*L/2*Math.cos(pi*(60-t));
				ay[i]=yy*(1+t/30)+3*1.732*L/4-3*L/2*Math.sin(pi*(60-t));
			}
			var fig=_root.createEmptyMovieClip("fig", 1);
			fig.lineStyle(1, 0xff0000, 100);
			fig.moveTo(xm+ax[0], ym+ay[0]);
			for(var i=1; i< m[k]; i++){fig.lineTo(xm+ax[i], ym+ay[i]);}
			fig.endFill();
			t++; if(t>=60){t=0;}
			if(t>100){clearInterval(_root.waiting);}
		}, 1)
	}
}

Copyright(C) 2007 YokahiYokatoki