//****************************************************************************************
// ファイル名: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)
}
}
|