− 飛行機 −  ちょっと表示が遅いです。下部のソースコードは、とりあえずMTASCだけでできることを示すためのものです。自由に改良して楽しんでください。
//****************************************************************************************
// ファイル名:airplane.as
// MTASCでコンパイルして swf ファイルを作るための ActionScript によるコード
// コンパイルは mtasc -version 8 -swf airplane.swf -main airplane.as -header 800:580:30
// All rights reserved. Copyright (C) 2007 YokahiYokatoki
//****************************************************************************************
class airplane
{
	static function main()
	{
		var airplane:airplane=new airplane(_root);
	}

	function airplane()
	{
		var xm=400; // マージン
		var ym=300;
		var L=600; // 飛行機の基本の長さ
		var As=100*50; // 画面の原点からの距離
		var Ar=200*50; // 視点の位置

		var hx=new Array(); // 飛行機座標系における飛行機の各点の座標
		var hy=new Array();
		var hz=new Array();

		var colorRnd=0;
		var QQx, QQy;

		var vN=747; // 頂点数
		var fN=698; // (fN=440+24+24+12+48+4+16+50+32+48) // 面の総数
		var fc=new Array(); //
		for(var j=0; j< fN; j++){fc[j]=new Array();}


		var px,py,pz;
		px=-52500; py=13000; pz=-1800;
		var ix=0.7071068; // 飛行機座標系の基本ベクトル-----------------
		var iy=-0.7071068;
		var iz=0;
		var jx=0.7071068;
		var jy=0.7071068;
		var jz=0;
		var kx=0;
		var ky=0;
		var kz=1;

		for(var i=0; i< 40; i++) // 胴体
		{
			var CS=Math.cos(Math.PI/20*i);
			var SI=Math.sin(Math.PI/20*i);
			hx[i]=1.8*L;		hy[i]=0.12*L*SI;		hz[i]=0.12*L*CS;
			hx[40+i]=1.75*L;	hy[40+i]=0.32*L*SI;		hz[40+i]=0.32*L*CS;
			hx[80+i]=1.7*L;		hy[80+i]=0.35*L*SI;		hz[80+i]=0.35*L*CS;
			hx[120+i]=1.4*L;	hy[120+i]=0.44*L*SI;	hz[120+i]=0.44*L*CS;
			hx[160+i]=1.1*L;	hy[160+i]=0.48*L*SI;	hz[160+i]=0.48*L*CS;
			hx[200+i]=0.8*L;	hy[200+i]=0.49*L*SI;	hz[200+i]=0.49*L*CS;
			hx[240+i]=0;		hy[240+i]=0.47*L*SI;	hz[240+i]=0.46*L*CS;
			hx[280+i]=-1.0*L;	hy[280+i]=0.42*L*SI;	hz[280+i]=0.42*L*CS-0.01*L;
			hx[320+i]=-2.0*L;	hy[320+i]=0.37*L*SI;	hz[320+i]=0.37*L*CS-0.02*L;
			hx[360+i]=-3.0*L;	hy[360+i]=0.25*L*SI;	hz[360+i]=0.25*L*CS-0.03*L;
			hx[400+i]=-4.0*L;	hy[400+i]=0.1*L*SI;		hz[400+i]=0.1*L*CS-0.03*L;
			hx[440+i]=-4.05*L;	hy[440+i]=0.05*L*SI;	hz[440+i]=0.01*L*CS-0.03*L;
		}

		var l1=480; //(頂点開始番号)
		hx[l1]=1.0*L;		hy[l1]=0.28*L;		hz[l1]=-0.15*L; // 左翼
		hx[l1+1]=0.95*L;	hy[l1+1]=1.0*L;		hz[l1+1]=-0.18*L;
		hx[l1+2]=-0.25*L;	hy[l1+2]=1.0*L;		hz[l1+2]=-0.18*L;
		hx[l1+3]=-0.3*L;	hy[l1+3]=0.28*L;	hz[l1+3]=-0.15*L;

		hx[l1+4]=1.0*L;		hy[l1+4]=0.12*L;	hz[l1+4]=-0.35*L;
		hx[l1+5]=0.95*L;	hy[l1+5]=1.0*L;		hz[l1+5]=-0.26*L;
		hx[l1+6]=-0.25*L;	hy[l1+6]=1.0*L;		hz[l1+6]=-0.26*L;
		hx[l1+7]=-0.3*L;	hy[l1+7]=0.12*L;	hz[l1+7]=-0.35*L;

		hx[l1+8]=0.8*L;		hy[l1+8]=3.5*L;		hz[l1+8]=-0.18*L;
		hx[l1+9]=-0.2*L;	hy[l1+9]=3.5*L;		hz[l1+9]=-0.18*L;
		hx[l1+10]=0.8*L;	hy[l1+10]=3.5*L;	hz[l1+10]=-0.23*L;
		hx[l1+11]=-0.2*L;	hy[l1+11]=3.5*L;	hz[l1+11]=-0.23*L;
		hx[l1+12]=0.65*L;	hy[l1+12]=3.7*L;	hz[l1+12]=-0.18*L;
		hx[l1+13]=-0.05*L;	hy[l1+13]=3.7*L;	hz[l1+13]=-0.18*L;
		for(var i=0; i< 14; i++) // 右翼
		{
			hx[l1+14+i]=hx[l1+i]; hy[l1+14+i]=-hy[l1+i]; hz[l1+14+i]=hz[l1+i];
		}

		var l2=l1+28;
		hx[l2]=-3.2*L;		hy[l2]=0.1*L;		hz[l2]=0.04*L; // 左尾翼
		hx[l2+1]=-3.4*L;	hy[l2+1]=1.3*L;		hz[l2+1]=0.04*L;
		hx[l2+2]=-3.5*L;	hy[l2+2]=1.4*L;		hz[l2+2]=0.02*L;
		hx[l2+3]=-3.8*L;	hy[l2+3]=1.4*L;		hz[l2+3]=0.02*L;
		hx[l2+4]=-3.9*L;	hy[l2+4]=1.3*L;		hz[l2+4]=0.04*L;
		hx[l2+5]=-4.0*L;	hy[l2+5]=0.1*L;		hz[l2+5]=0.04*L;
		hx[l2+6]=-3.2*L;	hy[l2+6]=0.1*L;		hz[l2+6]=0*L;
		hx[l2+7]=-3.4*L;	hy[l2+7]=1.3*L;		hz[l2+7]=0*L;
		hx[l2+8]=-3.9*L;	hy[l2+8]=1.3*L;		hz[l2+8]=0*L;
		hx[l2+9]=-4.0*L;	hy[l2+9]=0.1*L;		hz[l2+9]=0*L;
		for(var i=0; i< 10; i++) // 右尾翼
		{
			hx[l2+10+i]=hx[l2+i]; hy[l2+10+i]=-hy[l2+i]; hz[l2+10+i]=hz[l2+i];
		}
		hx[l2+20]=-3.2*L;	hy[l2+20]=0.02*L;	hz[l2+20]=0.2*L; // 垂直尾翼
		hx[l2+21]=-3.4*L;	hy[l2+21]=0.02*L;	hz[l2+21]=0.9*L;
		hx[l2+22]=-3.5*L;	hy[l2+22]=0;		hz[l2+22]=1.0*L;
		hx[l2+23]=-3.8*L;	hy[l2+23]=0;		hz[l2+23]=1.0*L;
		hx[l2+24]=-3.9*L;	hy[l2+24]=0.02*L;	hz[l2+24]=0.9*L;
		hx[l2+25]=-4.0*L;	hy[l2+25]=0.02*L;	hz[l2+25]=0.04*L;
		hx[l2+26]=-3.2*L;	hy[l2+26]=-0.02*L;	hz[l2+26]=0.2*L;
		hx[l2+27]=-3.4*L;	hy[l2+27]=-0.02*L;	hz[l2+27]=0.9*L;
		hx[l2+28]=-3.9*L;	hy[l2+28]=-0.02*L;	hz[l2+28]=0.9*L;
		hx[l2+29]=-4.0*L;	hy[l2+29]=-0.02*L;	hz[l2+29]=0.04*L;

		var l3=l2+30;
		hx[l3]=0.5*L;		hy[l3]=0.85*L;		hz[l3]=-0.3*L; // 左車輪棒
		hx[l3+1]=0.5*L;		hy[l3+1]=0.9*L;		hz[l3+1]=-0.3*L;
		hx[l3+2]=0.3*L;		hy[l3+2]=0.9*L;		hz[l3+2]=-0.3*L;
		hx[l3+3]=0.3*L;		hy[l3+3]=0.85*L;	hz[l3+3]=-0.3*L;
		hx[l3+4]=0.54*L;	hy[l3+4]=0.85*L;	hz[l3+4]=-0.85*L; //
		hx[l3+5]=0.54*L;	hy[l3+5]=1.05*L;	hz[l3+5]=-0.85*L;
		hx[l3+6]=0.39*L;	hy[l3+6]=1.05*L;	hz[l3+6]=-0.85*L;
		hx[l3+7]=0.39*L;	hy[l3+7]=0.85*L;	hz[l3+7]=-0.85*L;
		hx[l3+8]=0.53*L;	hy[l3+8]=0.85*L;	hz[l3+8]=-1.0*L; //
		hx[l3+9]=0.53*L;	hy[l3+9]=1.05*L;	hz[l3+9]=-1.0*L;
		hx[l3+10]=0.50*L;	hy[l3+10]=1.05*L;	hz[l3+10]=-1.0*L;
		hx[l3+11]=0.50*L;	hy[l3+11]=0.85*L;	hz[l3+11]=-1.0*L;
		for(var i=0; i< 12; i++) // 右車輪棒
		{
			hx[l3+12+i]=hx[l3+i]; hy[l3+12+i]=-hy[l3+i]; hz[l3+12+i]=hz[l3+i];
		}

		var l4=l3+24;
		for(var i=0; i< 8; i++) // 左車輪
		{
			hx[l4+i]=0.52*L+0.23*L*Math.sin(Math.PI/4*i); hy[l4+i]=L; hz[l4+i]=-L+0.23*L*Math.cos(Math.PI/4*i);
			hx[l4+i+8]=0.52*L+0.23*L*Math.sin(Math.PI/4*i); hy[l4+i+8]=0.9*L; hz[l4+i+8]=-L+0.23*L*Math.cos(Math.PI/4*i);
		}
		hx[l4+16]=0.52*L; hy[l4+16]=0.95*L; hz[l4+16]=-L; // 車輪の中心

		for(var i=0; i< 17; i++) // 右車輪
		{
			hx[l4+17+i]=hx[l4+i]; hy[l4+17+i]=-hy[l4+i]; hz[l4+17+i]=hz[l4+i];
		}

		var l5=l4+34;
		hx[l5]=-3.4*L; hy[l5]=0.02*L; hz[l5]=-0.1*L; // 後輪棒
		hx[l5+1]=-3.6*L; hy[l5+1]=0.02*L; hz[l5+1]=-0.1*L;
		hx[l5+2]=-3.6*L; hy[l5+2]=-0.02*L; hz[l5+2]=-0.1*L;
		hx[l5+3]=-3.4*L; hy[l5+3]=-0.02*L; hz[l5+3]=-0.1*L;
		hx[l5+4]=-3.5*L; hy[l5+4]=0.05*L; hz[l5+4]=-0.45*L;
		hx[l5+5]=-3.65*L; hy[l5+5]=0.05*L; hz[l5+5]=-0.45*L;
		hx[l5+6]=-3.65*L; hy[l5+6]=-0.05*L; hz[l5+6]=-0.45*L;
		hx[l5+7]=-3.5*L; hy[l5+7]=-0.05*L; hz[l5+7]=-0.45*L;

		var l6=l5+8;
		for(var i=0; i< 8; i++) // 後輪
		{
			hx[l6+i]=-3.55*L+0.15*L*Math.sin(Math.PI/4*i); hy[l6+i]=0; hz[l6+i]=-0.43*L+0.15*L*Math.cos(Math.PI/4*i);
		}
		hx[l6+8]=-3.55*L; hy[l6+8]=0.08*L; hz[l6+8]=-0.43*L;
		hx[l6+9]=-3.55*L; hy[l6+9]=-0.08*L; hz[l6+9]=-0.43*L;

		var l7=l6+10;
		for(var i=0; i< 10; i++) // コックピット
		{
			var CS=Math.cos(Math.PI/8*i-1.8);
			var SI=Math.sin(Math.PI/8*i-1.8);
			hx[l7+i]=0.6*L;			hy[l7+i]=0.02*L*SI;			hz[l7+i]=0.4*L+0.02*L*CS;
			hx[l7+10+i]=0.3*L;		hy[l7+10+i]=0.24*L*SI;		hz[l7+10+i]=0.4*L+0.23*L*CS;
			hx[l7+20+i]=0.25*L;		hy[l7+20+i]=0.24*L*SI;		hz[l7+20+i]=0.4*L+0.23*L*CS;
			hx[l7+30+i]=-0.5*L;		hy[l7+30+i]=0.2*L*SI;		hz[l7+30+i]=0.4*L+0.18*L*CS;
			hx[l7+40+i]=-0.55*L;	hy[l7+40+i]=0.2*L*SI;		hz[l7+40+i]=0.4*L+0.18*L*CS;
			hx[l7+50+i]=-1.0*L;		hy[l7+50+i]=0.02*L*SI;		hz[l7+50+i]=0.4*L+0.02*L*CS;
		}

		var l8=l7+60;
		for(var i=0; i< 8; i++) // プロペラ軸
		{
			var CS=Math.cos(Math.PI/4*i);
			var SI=Math.sin(Math.PI/4*i);
			hx[l8+i]=2.11*L;		hy[l8+i]=0.01*L*SI;			hz[l8+i]=0.01*L*CS;
			hx[l8+8+i]=2.10*L;		hy[l8+8+i]=0.04*L*SI;		hz[l8+8+i]=0.04*L*CS;
			hx[l8+16+i]=2.0*L;		hy[l8+16+i]=0.11*L*SI;		hz[l8+16+i]=0.11*L*CS;
			hx[l8+24+i]=1.9*L;		hy[l8+24+i]=0.135*L*SI;		hz[l8+24+i]=0.135*L*CS;
			hx[l8+32+i]=1.8*L;		hy[l8+32+i]=0.15*L*SI;		hz[l8+32+i]=0.15*L*CS;
		}

		// 面の形成------------------------------------------------------------
		for(var j=0; j< 11; j++) // 胴体
		{
			for(var i=0; i< 39; i++)
			{
				fc[40*j+i][0]=40*j+i;
				fc[40*j+i][1]=40*j+i+1;
				fc[40*j+i][2]=40*(j+1)+i+1;
				fc[40*j+i][3]=40*(j+1)+i;
			}
			fc[40*j+39][0]=40*j+39;
			fc[40*j+39][1]=40*j;
			fc[40*j+39][2]=40*(j+1);
			fc[40*j+39][3]=40*(j+1)+39;
		}

		var lf1=440; //(面の開始番号)
		fc[lf1][0]=l1;			fc[lf1][1]=l1+4;		fc[lf1][2]=l1+5;		fc[lf1][3]=l1+1; // 左翼
		fc[lf1+1][0]=l1;		fc[lf1+1][1]=l1+1;		fc[lf1+1][2]=l1+2;		fc[lf1+1][3]=l1+3;
		fc[lf1+2][0]=l1+3;		fc[lf1+2][1]=l1+2;		fc[lf1+2][2]=l1+6;		fc[lf1+2][3]=l1+7;
		fc[lf1+3][0]=l1+7;		fc[lf1+3][1]=l1+6;		fc[lf1+3][2]=l1+5;		fc[lf1+3][3]=l1+4;
		fc[lf1+4][0]=l1+1;		fc[lf1+4][1]=l1+5;		fc[lf1+4][2]=l1+10;		fc[lf1+4][3]=l1+8;
		fc[lf1+5][0]=l1+1;		fc[lf1+5][1]=l1+8;		fc[lf1+5][2]=l1+9;		fc[lf1+5][3]=l1+2;
		fc[lf1+6][0]=l1+2;		fc[lf1+6][1]=l1+9;		fc[lf1+6][2]=l1+11;		fc[lf1+6][3]=l1+6;
		fc[lf1+7][0]=l1+6;		fc[lf1+7][1]=l1+11;		fc[lf1+7][2]=l1+10;		fc[lf1+7][3]=l1+5;
		fc[lf1+8][0]=l1+8;		fc[lf1+8][1]=l1+12;		fc[lf1+8][2]=l1+13;		fc[lf1+8][3]=l1+9;
		fc[lf1+9][0]=l1+11;		fc[lf1+9][1]=l1+13;		fc[lf1+9][2]=l1+12;		fc[lf1+9][3]=l1+10;
		fc[lf1+10][0]=l1+12;	fc[lf1+10][1]=l1+8;		fc[lf1+10][2]=l1+10;	fc[lf1+10][3]=l1+10;
		fc[lf1+11][0]=l1+13;	fc[lf1+11][1]=l1+11;	fc[lf1+11][2]=l1+9;		fc[lf1+11][3]=l1+9;
		fc[lf1+12][0]=l1+14;	fc[lf1+12][1]=l1+15;	fc[lf1+12][2]=l1+19;	fc[lf1+12][3]=l1+18; // 右翼
		fc[lf1+13][0]=l1+14;	fc[lf1+13][1]=l1+17;	fc[lf1+13][2]=l1+16;	fc[lf1+13][3]=l1+15;
		fc[lf1+14][0]=l1+17;	fc[lf1+14][1]=l1+21;	fc[lf1+14][2]=l1+20;	fc[lf1+14][3]=l1+16;
		fc[lf1+15][0]=l1+21;	fc[lf1+15][1]=l1+18;	fc[lf1+15][2]=l1+19;	fc[lf1+15][3]=l1+20;
		fc[lf1+16][0]=l1+15;	fc[lf1+16][1]=l1+22;	fc[lf1+16][2]=l1+24;	fc[lf1+16][3]=l1+19;
		fc[lf1+17][0]=l1+15;	fc[lf1+17][1]=l1+16;	fc[lf1+17][2]=l1+23;	fc[lf1+17][3]=l1+22;
		fc[lf1+18][0]=l1+16;	fc[lf1+18][1]=l1+20;	fc[lf1+18][2]=l1+25;	fc[lf1+18][3]=l1+23;
		fc[lf1+19][0]=l1+20;	fc[lf1+19][1]=l1+19;	fc[lf1+19][2]=l1+24;	fc[lf1+19][3]=l1+25;
		fc[lf1+20][0]=l1+22;	fc[lf1+20][1]=l1+23;	fc[lf1+20][2]=l1+27;	fc[lf1+20][3]=l1+26;
		fc[lf1+21][0]=l1+25;	fc[lf1+21][1]=l1+24;	fc[lf1+21][2]=l1+26;	fc[lf1+21][3]=l1+27;
		fc[lf1+22][0]=l1+26;	fc[lf1+22][1]=l1+24;	fc[lf1+22][2]=l1+22;	fc[lf1+22][3]=l1+22;
		fc[lf1+23][0]=l1+27;	fc[lf1+23][1]=l1+23;	fc[lf1+23][2]=l1+25;	fc[lf1+23][3]=l1+25;

		var lf2=lf1+24;
		fc[lf2][0]=l2;			fc[lf2][1]=l2+6;		fc[lf2][2]=l2+7;		fc[lf2][3]=l2+1; // 左尾翼 
		fc[lf2+1][0]=l2;		fc[lf2+1][1]=l2+1;		fc[lf2+1][2]=l2+4;		fc[lf2+1][3]=l2+5;
		fc[lf2+2][0]=l2+5;		fc[lf2+2][1]=l2+4;		fc[lf2+2][2]=l2+8;		fc[lf2+2][3]=l2+9;
		fc[lf2+3][0]=l2+9;		fc[lf2+3][1]=l2+8;		fc[lf2+3][2]=l2+7;		fc[lf2+3][3]=l2+6;
		fc[lf2+4][0]=l2+1;		fc[lf2+4][1]=l2+2;		fc[lf2+4][2]=l2+3;		fc[lf2+4][3]=l2+4;
		fc[lf2+5][0]=l2+8;		fc[lf2+5][1]=l2+3;		fc[lf2+5][2]=l2+2;		fc[lf2+5][3]=l2+7;
		fc[lf2+6][0]=l2+1;		fc[lf2+6][1]=l2+7;		fc[lf2+6][2]=l2+2;		fc[lf2+6][3]=l2+2;
		fc[lf2+7][0]=l2+8;		fc[lf2+7][1]=l2+4;		fc[lf2+7][2]=l2+3;		fc[lf2+7][3]=l2+3;
		fc[lf2+8][0]=l2+10;		fc[lf2+8][1]=l2+11;		fc[lf2+8][2]=l2+17;		fc[lf2+8][3]=l2+16; // 右尾翼
		fc[lf2+9][0]=l2+10;		fc[lf2+9][1]=l2+15;		fc[lf2+9][2]=l2+14;		fc[lf2+9][3]=l2+11;
		fc[lf2+10][0]=l2+15;	fc[lf2+10][1]=l2+19;	fc[lf2+10][2]=l2+18;	fc[lf2+10][3]=l2+14;
		fc[lf2+11][0]=l2+19;	fc[lf2+11][1]=l2+16;	fc[lf2+11][2]=l2+17;	fc[lf2+11][3]=l2+18;
		fc[lf2+12][0]=l2+11;	fc[lf2+12][1]=l2+14;	fc[lf2+12][2]=l2+13;	fc[lf2+12][3]=l2+12;
		fc[lf2+13][0]=l2+18;	fc[lf2+13][1]=l2+17;	fc[lf2+13][2]=l2+12;	fc[lf2+13][3]=l2+13;
		fc[lf2+14][0]=l2+17;	fc[lf2+14][1]=l2+11;	fc[lf2+14][2]=l2+12;	fc[lf2+14][3]=l2+12;
		fc[lf2+15][0]=l2+13;	fc[lf2+15][1]=l2+14;	fc[lf2+15][2]=l2+18;	fc[lf2+15][3]=l2+18;
		fc[lf2+16][0]=l2+20;	fc[lf2+16][1]=l2+21;	fc[lf2+16][2]=l2+27;	fc[lf2+16][3]=l2+26; // 垂直尾翼
		fc[lf2+17][0]=l2+20;	fc[lf2+17][1]=l2+25;	fc[lf2+17][2]=l2+24;	fc[lf2+17][3]=l2+21;
		fc[lf2+18][0]=l2+25;	fc[lf2+18][1]=l2+29;	fc[lf2+18][2]=l2+28;	fc[lf2+18][3]=l2+24;
		fc[lf2+19][0]=l2+29;	fc[lf2+19][1]=l2+26;	fc[lf2+19][2]=l2+27;	fc[lf2+19][3]=l2+28;
		fc[lf2+20][0]=l2+21;	fc[lf2+20][1]=l2+24;	fc[lf2+20][2]=l2+23;	fc[lf2+20][3]=l2+22;
		fc[lf2+21][0]=l2+28;	fc[lf2+21][1]=l2+27;	fc[lf2+21][2]=l2+22;	fc[lf2+21][3]=l2+23;
		fc[lf2+22][0]=l2+27;	fc[lf2+22][1]=l2+21;	fc[lf2+22][2]=l2+22;	fc[lf2+22][3]=l2+22;
		fc[lf2+23][0]=l2+23;	fc[lf2+23][1]=l2+24;	fc[lf2+23][2]=l2+28;	fc[lf2+23][3]=l2+28;

		var lf3=lf2+24;
		fc[lf3][0]=l3+3;	fc[lf3][1]=l3+7;	fc[lf3][2]=l3+4;	fc[lf3][3]=l3; // 左車輪棒
		fc[lf3+1][0]=l3;	fc[lf3+1][1]=l3+4;	fc[lf3+1][2]=l3+5;	fc[lf3+1][3]=l3+1;
		fc[lf3+2][0]=l3+1;	fc[lf3+2][1]=l3+5;	fc[lf3+2][2]=l3+6;	fc[lf3+2][3]=l3+2;
		fc[lf3+3][0]=l3+2;	fc[lf3+3][1]=l3+6;	fc[lf3+3][2]=l3+7;	fc[lf3+3][3]=l3+3;
		fc[lf3+4][0]=l3+7;	fc[lf3+4][1]=l3+11;	fc[lf3+4][2]=l3+8;	fc[lf3+4][3]=l3+4; //
		fc[lf3+5][0]=l3+5;	fc[lf3+5][1]=l3+9;	fc[lf3+5][2]=l3+10;	fc[lf3+5][3]=l3+6;
		fc[lf3+6][0]=l3+12;	fc[lf3+6][1]=l3+16;	fc[lf3+6][2]=l3+19;	fc[lf3+6][3]=l3+15; // 右車輪棒
		fc[lf3+7][0]=l3+15;	fc[lf3+7][1]=l3+19;	fc[lf3+7][2]=l3+18;	fc[lf3+7][3]=l3+14;
		fc[lf3+8][0]=l3+14;	fc[lf3+8][1]=l3+18;	fc[lf3+8][2]=l3+17;	fc[lf3+8][3]=l3+13;
		fc[lf3+9][0]=l3+13;	fc[lf3+9][1]=l3+17;	fc[lf3+9][2]=l3+16;	fc[lf3+9][3]=l3+12;
		fc[lf3+10][0]=l3+16;fc[lf3+10][1]=l3+20;fc[lf3+10][2]=l3+23;fc[lf3+10][3]=l3+19; //
		fc[lf3+11][0]=l3+18;fc[lf3+11][1]=l3+22;fc[lf3+11][2]=l3+21;fc[lf3+11][3]=l3+17;

		var lf4=lf3+12; // 左車輪
		for(var i=0; i< 7; i++)
		{
			fc[lf4+i][0]=l4+i; fc[lf4+i][1]=l4+i+8; fc[lf4+i][2]=l4+i+9; fc[lf4+i][3]=l4+i+1;
		}
		fc[lf4+15][0]=l4+7; fc[lf4+15][1]=l4+15; fc[lf4+15][2]=l4+8; fc[lf4+15][3]=l4;
		for(var i=0; i< 7; i++)
		{
			fc[lf4+8+i][0]=l4+16; fc[lf4+8+i][1]=l4+i; fc[lf4+8+i][2]=l4+i+1; fc[lf4+8+i][3]=l4+i+1;
		}
		fc[lf4+15][0]=l4+16; fc[lf4+15][1]=l4+7; fc[lf4+15][2]=l4; fc[lf4+15][3]=l4;
		for(var i=0; i< 7; i++)
		{
			fc[lf4+16+i][0]=l4+16; fc[lf4+16+i][1]=l4+i+9; fc[lf4+16+i][2]=l4+i+8; fc[lf4+16+i][3]=l4+i+8;
		}
		fc[lf4+23][0]=l4+16; fc[lf4+23][1]=l4+8; fc[lf4+23][2]=l4+15; fc[lf4+23][3]=l4+15;
		for(var i=0; i< 7; i++) // 右車輪
		{
			fc[lf4+24+i][0]=l4+i+17; fc[lf4+24+i][1]=l4+i+18; fc[lf4+24+i][2]=l4+i+26; fc[lf4+24+i][3]=l4+i+25;
		}
		fc[lf4+31][0]=l4+24; fc[lf4+31][1]=l4+17; fc[lf4+31][2]=l4+25; fc[lf4+31][3]=l4+32;
		for(var i=0; i< 7; i++)
		{
			fc[lf4+32+i][0]=l4+33; fc[lf4+32+i][1]=l4+i+18; fc[lf4+32+i][2]=l4+i+17; fc[lf4+32+i][3]=l4+i+17;
		}
		fc[lf4+39][0]=l4+33; fc[lf4+39][1]=l4+17; fc[lf4+39][2]=l4+24; fc[lf4+39][3]=l4+24;
		for(var i=0; i< 7; i++)
		{
			fc[lf4+40+i][0]=l4+33; fc[lf4+40+i][1]=l4+i+25; fc[lf4+40+i][2]=l4+i+26; fc[lf4+40+i][3]=l4+i+26;
		}
		fc[lf4+47][0]=l4+33; fc[lf4+47][1]=l4+32; fc[lf4+47][2]=l4+25; fc[lf4+47][3]=l4+25;

		var lf5=lf4+48; // 後輪棒
		fc[lf5][0]=l5;	fc[lf5][1]=l5+4;	fc[lf5][2]=l5+5;	fc[lf5][3]=l5+1;
		fc[lf5+1][0]=l5+2;	fc[lf5+1][1]=l5+6;	fc[lf5+1][2]=l5+7;	fc[lf5+1][3]=l5+3;
		fc[lf5+2][0]=l5;	fc[lf5+2][1]=l5+3;	fc[lf5+2][2]=l5+7;	fc[lf5+2][3]=l5+4;
		fc[lf5+3][0]=l5+1;	fc[lf5+3][1]=l5+5;	fc[lf5+3][2]=l5+6;	fc[lf5+3][3]=l5+2;

		var lf6=lf5+4; // 後輪
		for(var i=0; i< 7; i++)
		{
			fc[lf6+i][0]=l6+8;	fc[lf6+i][1]=l6+i;	fc[lf6+i][2]=l6+i+1;	fc[lf6+i][3]=l6+i+1;
		}
		fc[lf6+7][0]=l6+8;	fc[lf6+7][1]=l6+7;	fc[lf6+7][2]=l6;	fc[lf6+7][3]=l6;
		for(var i=0; i< 7; i++)
		{
			fc[lf6+i+8][0]=l6+9;	fc[lf6+i+8][1]=l6+i+1;	fc[lf6+i+8][2]=l6+i;	fc[lf6+i+8][3]=l6+i;
		}
		fc[lf6+15][0]=l6+9;	fc[lf6+15][1]=l6;	fc[lf6+15][2]=l6+7;	fc[lf6+15][3]=l6+7;

		var lf7=lf6+16;
		for(var j=0; j< 5; j++) // コックピット
		{
			for(var i=0; i< 9; i++)
			{
				fc[lf7+10*j+i][0]=l7+10*j+i;
				fc[lf7+10*j+i][1]=l7+10*j+i+1;
				fc[lf7+10*j+i][2]=l7+10*(j+1)+i+1;
				fc[lf7+10*j+i][3]=l7+10*(j+1)+i;
			}
			fc[lf7+10*j+9][0]=l7+10*j+9;
			fc[lf7+10*j+9][1]=l7+10*j;
			fc[lf7+10*j+9][2]=l7+10*(j+1);
			fc[lf7+10*j+9][3]=l7+10*(j+1)+9;
		}

		var lf8=lf7+50;
		for(var j=0; j< 4; j++) // プロペラ軸
		{
			for(var i=0; i< 8; i++)
			{
				fc[lf8+8*j+i][0]=l8+8*j+i;
				fc[lf8+8*j+i][1]=l8+8*j+i+1;
				fc[lf8+8*j+i][2]=l8+8*(j+1)+i+1;
				fc[lf8+8*j+i][3]=l8+8*(j+1)+i;
			}
			fc[lf8+8*j+7][0]=l8+8*j+7;
			fc[lf8+8*j+7][1]=l8+8*j;
			fc[lf8+8*j+7][2]=l8+8*(j+1);
			fc[lf8+8*j+7][3]=l8+8*(j+1)+7;
		}

		var lf9=lf8+32; // プロペラ
		var l9=l8+40;
		for(var i=0; i< 15; i++)
		{
			fc[lf9+i][0]=l9+i; fc[lf9+i][1]=l9+i+16; fc[lf9+i][2]=l9+i+17; fc[lf9+i][3]=l9+i+1;
		}
		fc[lf9+15][0]=l9+15; fc[lf9+15][1]=l9+31; fc[lf9+15][2]=l9+16; fc[lf9+15][3]=l9;

		for(var i=0; i< 15; i++)
		{
			fc[lf9+i+16][0]=l9+32; fc[lf9+i+16][1]=l9+i; fc[lf9+i+16][2]=l9+i+1; fc[lf9+i+16][3]=l9+i+1;
		}
		fc[lf9+31][0]=l9+32; fc[lf9+31][1]=l9+15; fc[lf9+31][2]=l9; fc[lf9+31][3]=l9;

		for(var i=0; i< 15; i++)
		{
			fc[lf9+32+i][0]=l9+32; fc[lf9+32+i][1]=l9+i+17; fc[lf9+32+i][2]=l9+i+16; fc[lf9+32+i][3]=l9+i+16;
		}
		fc[lf9+47][0]=l9+32; fc[lf9+47][1]=l9+16; fc[lf9+47][2]=l9+31; fc[lf9+47][3]=l9+31;

		var fig0=_root.createEmptyMovieClip("fig0", 0); // 背景色
		fig0.lineStyle(0, 0x000000, 0);
		fig0.beginFill(0x5988D4, 100);
		fig0.moveTo(0, 0);
		fig0.lineTo(0, 580);
		fig0.lineTo(800, 580);
		fig0.lineTo(800, 0);
		fig0.lineTo(0,0);
		fig0.endFill();

		var haikei=_root.createEmptyMovieClip("haikei", 1); // 写真を外部ファイルから読み込んで配置する
		haikei.loadMovie("haikei.jpg");
		haikei._x=0;
		haikei._y=0;

		//-------------------------------------------------------------------------------------
		var time=0;
		var waiting=setInterval(function()
		{
			px+=160*ix; // 飛行機座標系の原点
			py+=160*iy;
			pz+=160*iz;

			var Arss=(Ar-As)/Math.sqrt((px-Ar)*(px-Ar)+py*py); // 円柱画面を採用
			var ox=(Ar-As)*Math.atan2(py, Ar-px);
			var oy=-pz*Arss;

			haikei._x=-ox;
			haikei._y=120-oy;

			var ax=new Array(); // 飛行機の各点の座標
			var ay=new Array();
			var az=new Array();
			var sx=new Array(); // 飛行機の各点の描画座標
			var sy=new Array();

			var CSR=Math.cos(0.1);
			var SIR=Math.sin(0.1);
			var ixx=ix*CSR+jx*SIR;
			var iyy=iy*CSR+jy*SIR;
			var izz=iz*CSR+jz*SIR;
			var jxx=-ix*SIR+jx*CSR;
			var jyy=-iy*SIR+jy*CSR;
			var jzz=-iz*SIR+jz*CSR;
			ix=ixx; iy=iyy; iz=izz;
			jx=jxx; jy=jyy; jz=jzz;

			CSR=Math.cos(0.05);
			SIR=Math.sin(0.05);
			ixx=ix*CSR+kx*SIR;
			iyy=iy*CSR+ky*SIR;
			izz=iz*CSR+kz*SIR;
			var kxx=-ix*SIR+kx*CSR;
			var kyy=-iy*SIR+ky*CSR;
			var kzz=-iz*SIR+kz*CSR;
			ix=ixx; iy=iyy; iz=izz;
			kx=kxx; ky=kyy; kz=kzz;

			var l=714;
			for(var i=0; i< 16; i++) // プロペラ
			{
				hx[l+i]=1.85*L;
				hy[l+i]=0.8*L*Math.sin(Math.PI/8*i+Math.PI/9*time);
				hz[l+i]=0.8*L*Math.cos(Math.PI/8*i+Math.PI/9*time);
				hx[l+i+16]=1.9*L;
				hy[l+i+16]=0.8*L*Math.sin(Math.PI/8*i+Math.PI/9*time);
				hz[l+i+16]=0.8*L*Math.cos(Math.PI/8*i+Math.PI/9*time);
			}
			hx[l+32]=1.85*L; hy[l+32]=0; hz[l+32]=0;

			for(var i=0; i< vN; i++) //---------------------------------------------------
			{
				ax[i]=px+hx[i]*ix+hy[i]*jx+hz[i]*kx;
				ay[i]=py+hx[i]*iy+hy[i]*jy+hz[i]*ky;
				az[i]=pz+hx[i]*iz+hy[i]*jz+hz[i]*kz;
				var Ars=(Ar-As)/Math.sqrt((ax[i]-Ar)*(ax[i]-Ar)+ay[i]*ay[i]);
				sx[i]=(Ar-As)*Math.atan2(ay[i], Ar-ax[i]);
				sy[i]=-az[i]*Ars;
			}

			// 視点から見える面のみ、視点から遠くの面から描画するための設定------------------------
			var u1x, u1y, u1z; // ベクトル1
			var u2x, u2y, u2z; // ベクトル2
			var ux, uy, uz; // 面の法線方向のベクトル
			var gx, gy, gz; // 面の中心
			var count=-1;
			var colX=new Array();
			var colY=new Array();
			var colZ=new Array();
			var tmp=new Array();
			var depth=new Array(); // 面のdepth値
			for(var i=0; i< fN; i++)
			{
				u1x=ax[fc[i][1]]-ax[fc[i][0]];
				u1y=ay[fc[i][1]]-ay[fc[i][0]];
				u1z=az[fc[i][1]]-az[fc[i][0]];
				u2x=ax[fc[i][3]]-ax[fc[i][0]];
				u2y=ay[fc[i][3]]-ay[fc[i][0]];
				u2z=az[fc[i][3]]-az[fc[i][0]];
				ux=u1y*u2z-u1z*u2y;
				uy=u1z*u2x-u1x*u2z;
				uz=u1x*u2y-u1y*u2x;
				gx=(ax[fc[i][0]]+ax[fc[i][1]]+ax[fc[i][2]]+ax[fc[i][3]])/4-Ar;
				gy=(ay[fc[i][0]]+ay[fc[i][1]]+ay[fc[i][2]]+ay[fc[i][3]])/4;
				gz=(az[fc[i][0]]+az[fc[i][1]]+az[fc[i][2]]+az[fc[i][3]])/4;
				var u=Math.sqrt(ux*ux+uy*uy+uz*uz);
				var gg=Math.sqrt(gx*gx+gy*gy+gz*gz);
				var uu=-(ux*gx+uy*gy+uz*gz)/(u*gg);
				if(uu>0) // 視点から見える面のみ描画するため
				{
					count++;
					tmp[count]=i;
					depth[count]=gg; // 視点からの距離
					colX[i]=255*ux/u; if(colX[i]< 0){colX[i]=0;} else if(colX[i]>255){colX[i]=255;}
					colY[i]=100+155*uy/u; if(colY[i]< 0){colY[i]=0;} else if(colY[i]>255){colY[i]=255;}
					colZ[i]=200+200*uz/u; if(colZ[i]< 0){colZ[i]=0;} else if(colZ[i]>255){colZ[i]=255;}
					if(i< 160 || (i>=500 && i< 508) || (i>=524 && i< 532)) // 先端部分、タイヤ
					{
						colZ[i]=255*uz/u; if(colZ[i]< 0){colZ[i]=0;} else if(colZ[i]>255){colZ[i]=255;}
					}
					else if(i>=440 && i< 488) // 翼
					{
						colY[i]=120+125*uz/u; if(colY[i]< 0){colY[i]=0;} else if(colY[i]>255){colY[i]=255;}
					}
					else if((i>=488 && i< 500) || (i>=548 && i< 552)) // 車輪棒
					{
						colZ[i]=100+155*uz/u; if(colZ[i]< 0){colZ[i]=0;} else if(colZ[i]>255){colZ[i]=255;}
					}
					else if((i>=568 && i< 578) || (i>=588 && i< 598)) // コックピット
					{
						colZ[i]=255*uz/u; if(colZ[i]< 0){colZ[i]=1;} else if(colZ[i]>255){colZ[i]=255;}
					}
				}
			}

			var n1;
			var n2, m;
			do
			{
				m=0;
				for(var n=0; n< count; n++)
				{
					if(depth[n]< depth[n+1])
					{
						n1=depth[n]; depth[n]=depth[n+1]; depth[n+1]=n1;
						n2=tmp[n]; tmp[n]=tmp[n+1]; tmp[n+1]=n2;
						m=n;
					}
				}
			} while(m!=0);

			var fig1=_root.createEmptyMovieClip("fig1", 10);
			for(var i=0; i<=count; i++) // 面の描画
			{
				var cc=0xff5555;
				if(tmp[i]< 160 || (tmp[i]>=500 && tmp[i]< 508) || (tmp[i]>=524 && tmp[i]< 532)) // 先端部分、タイヤ
				{
					cc=0x000000;
				}
				else if(tmp[i]>=440 && tmp[i]< 488) // 翼
				{
					cc=0xaa0000;
				}
				else if((tmp[i]>=488 && tmp[i]< 500) || (tmp[i]>=548 && tmp[i]< 552)) // 車輪棒
				{
					cc=0x226644;
				}
				else if((tmp[i]>=508 && tmp[i]< 524) || (tmp[i]>=532 && tmp[i]< 548) || (tmp[i]>=552 && tmp[i]<568) || (tmp[i]>=618 && tmp[i]< 650)) // タイヤの側面、プロペラ軸
				{
					cc=0x444444;
				}
				else if((tmp[i]>=568 && tmp[i]< 578) || (tmp[i]>=588 && tmp[i]< 598)) // コックピット
				{
					cc=0xffffff;
				}

				fig1.lineStyle(0, 0x000000, 0);
				if(tmp[i]< 650){fig1.beginFill(cc, 100);} else {fig1.beginFill(0xffffff, 20);}
				fig1.moveTo(xm+sx[fc[tmp[i]][0]]-ox, ym+sy[fc[tmp[i]][0]]-oy);
				fig1.lineTo(xm+sx[fc[tmp[i]][1]]-ox, ym+sy[fc[tmp[i]][1]]-oy);
				fig1.lineTo(xm+sx[fc[tmp[i]][2]]-ox, ym+sy[fc[tmp[i]][2]]-oy);
				fig1.lineTo(xm+sx[fc[tmp[i]][3]]-ox, ym+sy[fc[tmp[i]][3]]-oy);
				fig1.lineTo(xm+sx[fc[tmp[i]][0]]-ox, ym+sy[fc[tmp[i]][0]]-oy);
				fig1.endFill();
				if(tmp[i]< 650)
				{
					var clr=colZ[tmp[i]]/2.55-50;
					if(clr< 0){fig1.beginFill(0x000000, 2*Math.abs(clr));} else {fig1.beginFill(0xffffff, 2*Math.abs(clr));}
					fig1.moveTo(xm+sx[fc[tmp[i]][0]]-ox, ym+sy[fc[tmp[i]][0]]-oy);
					fig1.lineTo(xm+sx[fc[tmp[i]][1]]-ox, ym+sy[fc[tmp[i]][1]]-oy);
					fig1.lineTo(xm+sx[fc[tmp[i]][2]]-ox, ym+sy[fc[tmp[i]][2]]-oy);
					fig1.lineTo(xm+sx[fc[tmp[i]][3]]-ox, ym+sy[fc[tmp[i]][3]]-oy);
					fig1.lineTo(xm+sx[fc[tmp[i]][0]]-ox, ym+sy[fc[tmp[i]][0]]-oy);
					fig1.endFill();
				}
			}
			time++;
		}, 10)
	}
}

Copyright(C) 2007 YokahiYokatoki