📄 nav.c
字号:
StringOut("FAF",ROW1+20,TOP,YELLOW,BFINALRESULT);
bScafaf=true;
tempd=g_nParameters[17];//
templ=g_nParameters[18]*RADIUS3/g_nParameters[11];
fafzx=(int)(Ox+templ*sin(tempd*PI_180));
fafzy=(int)(Oy-templ*cos(tempd*PI_180));
Line(Ox,Oy,fafzx,fafzy,YELLOW,BFINALRESULT);//zhuan wan
tempd=g_nParameters[19];//
templ=g_nParameters[20]*RADIUS3/g_nParameters[11];
fafyx=(int)(Ox+templ*sin(tempd*PI_180));
fafyy=(int)(Oy-templ*cos(tempd*PI_180));
DrawArc(fafyx,fafyy,fafzx,fafzy,WHOLEANGLE,CAMBLUE,BFINALRESULT);//YUAN
tempd=g_nParameters[21];//
templ=g_nParameters[22]*RADIUS3/g_nParameters[11];
fafdx=(int)(Ox+templ*sin(tempd*PI_180));
fafdy=(int)(Oy-templ*cos(tempd*PI_180));//faf dian
tempd=g_nParameters[23];//
templ=g_nParameters[24]*RADIUS3/g_nParameters[11];
airportx=(int)(Ox+templ*sin(tempd*PI_180));
airporty=(int)(Oy-templ*cos(tempd*PI_180));
Line(fafdx,fafdy,airportx,airporty,YELLOW,BFINALRESULT);
Line(airportx-5,airporty,airportx,airporty,YELLOW,BFINALRESULT);
Line(airportx,airporty-5,airportx,airporty,YELLOW,BFINALRESULT);//jin chang
Int2Str(g_nParameters[16],airportx,airporty,CAMBLUE,BFINALRESULT,0);
DrawArc(airportx+12,airporty+10,airportx,airporty,WHOLEANGLE,PURPLE1,BFINALRESULT);//ji chang
}
/////////////////////////////////////////////////////////////////////
void SCA_RWYproc()
{
int airportx,airporty;
float tempd,templ;
StringOut("SCA",LEFT,TOP,YELLOW,BFINALRESULT);
StringOut("RWY",ROW1+20,TOP,YELLOW,BFINALRESULT);
bScarwy=true;
tempd=g_nParameters[17];//
templ=g_nParameters[18]*RADIUS3/g_nParameters[11];
airportx=(int)(Ox+templ*sin(tempd*PI_180));
airporty=(int)(Oy-templ*cos(tempd*PI_180));
Line(Ox,Oy,airportx,airporty,YELLOW,BFINALRESULT);
Int2Str(g_nParameters[16],airportx-10,airporty-10,CAMBLUE,BFINALRESULT,0);
DrawArc(airportx,airporty,airportx+12,airporty+12,WHOLEANGLE,PURPLE1,BFINALRESULT);//ji chang
}
/////////////////////////////////////////////////////////////////////
void NAVproc()
{
static int angle=0;
int x1,y1,x2,y2;//COURSE DEGREE RECT
int paraInta10,paraInta;//dongqian hangxiang
int paraIntb,paraIntc;//yingfei hangxiang,daifeijvli
int degree2,degree1;//
int hour,minute,second,j;
int color=GREEN1;
char cTime[8],cMinute[8],cSecond[8],cHangx[8],cJl[8];
bool bNav=false,bNOTNav=true;
char dire;
switch(g_nParameters[3])
{
case 1: ARTEproc();break;
case 2: SCRSproc();break;
case 3: WPNTproc();break;
case 4: PPUCproc();break;
case 5: HEPproc();break;
case 6: ADFproc();break;
case 7: TCNproc();break;
case 8: TCN_FAFproc();break;
case 9: SCA_FAFproc();break;
case 12: SCA_RWYproc();break;
default: break;
}
bNav=bArte|bWpnt|bScrs|bPpuc|bHep|bHepData|bAdf|bTcn|bTcnfaf|bScafaf|bScarwy;
bNOTNav=!(bTcnfaf|bScafaf|bScarwy);
if(bNav==false)
{
return;
}
if(bHepData)/////shujv bhepdata start
{
StringOut("RTN",RIGHT,LINE5-50,GREEN1,BFINALRESULT);
StringOut("LAT",(ROW1+ROW2)/2,LINE1,YELLOW,BFINALRESULT);
StringOut("LON",ROW3,LINE1,YELLOW,BFINALRESULT);
StringOut("H",(ROW5+ROW4)/2,LINE1,YELLOW,BFINALRESULT);
StringOut("00",ROW1+10,LINE1+30,GREEN1,BFINALRESULT);
StringOut("N35$15.3",(ROW1+ROW2)/2,LINE1+30,GREEN1,BFINALRESULT);
StringOut("E130$10.0",ROW3,LINE1+30,GREEN1,BFINALRESULT);
StringOut("1800",(ROW5+ROW4)/2,LINE1+30,GREEN1,BFINALRESULT);
StringOut("01",ROW1+10,LINE1+60,GREEN1,BFINALRESULT);
StringOut("N40$15.3",(ROW1+ROW2)/2,LINE1+60,GREEN1,BFINALRESULT);
StringOut("E132$10.0",ROW3,LINE1+60,GREEN1,BFINALRESULT);
StringOut("1200",(ROW5+ROW4)/2,LINE1+60,GREEN1,BFINALRESULT);
StringOut("02",ROW1+10,LINE1+90,GREEN1,BFINALRESULT);
StringOut("N43$15.3",(ROW1+ROW2)/2,LINE1+90,GREEN1,BFINALRESULT);
StringOut("E133$10.0",ROW3,LINE1+90,GREEN1,BFINALRESULT);
StringOut("1400",(ROW5+ROW4)/2,LINE1+90,GREEN1,BFINALRESULT);
Line(LEFT,LINE1+55,RIGHT,LINE1+55,CAMBLUE,BFINALRESULT);
Line(LEFT,LINE1+85,RIGHT,LINE1+85,CAMBLUE,BFINALRESULT);
for(i=1;i<=15;i++)
{
Line(LEFT,LINE1+55+i,LEFT+i,LINE1+55+i,CAMBLUE,BFINALRESULT);
Line(RIGHT,LINE1+55+i,RIGHT-i,LINE1+55+i,CAMBLUE,BFINALRESULT);
}
for(i=1;i<=15;i++)
{
Line(LEFT,(LINE1+55+LINE1+85)/2+i,LEFT+(LINE1+55+LINE1+85)/2-LINE1-55-i,(LINE1+55+LINE1+85)/2+i,CAMBLUE,BFINALRESULT);
Line(RIGHT,(LINE1+55+LINE1+85)/2+i,RIGHT-(LINE1+55+LINE1+85)/2+LINE1+55+i,(LINE1+55+LINE1+85)/2+i,CAMBLUE,BFINALRESULT);
}
return;
}
// else/////////////hua mian
// {
// }
if(g_nParameters[4]==0x2)
StringOut("MAG",ROW5,TOP,CAMBLUE,BFINALRESULT);
else if(g_nParameters[4]==0x3)
StringOut("TRU",ROW5,TOP,CAMBLUE,BFINALRESULT);
DrawArc(Ox,Oy,Ox,Oy-RADIUS,WHOLEANGLE,GREEN1,BFINALRESULT);
DrawArc(Ox,Oy,Ox+RADIUS2*cos(45*PI_180),Oy+RADIUS2*cos(45*PI_180),270,GREEN1,BFINALRESULT);//|NEEDMODIFY);
DrawArc(Ox,Oy,Ox+RADIUS3*cos(30*PI_180),Oy-RADIUS3*sin(30*PI_180),120,GREEN1,BFINALRESULT);//|NEEDMODIFY);
// i=numofresult;j=numofrotatedresult;
//COURSE SCALE CENTER
Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT1,TEST2,BFINALRESULT);
paraInta10=Integer10(g_nParameters[12]);
paraInta=(int)(g_nParameters[12]+0.5);//dangqianhangxiang
if((paraInta10+30)>WHOLEANGLE)degree2=paraInta10+30-WHOLEANGLE;
else degree2=paraInta10+30;
if((paraInta10-40)<0)degree1=paraInta10-40+WHOLEANGLE;
else degree1=paraInta10-40;
// paraIntb=(int)(g_nParameters[13]+0.5);//yingfeihangxiang
// paraIntc=(int)(g_nParameters[14]+0.5);//daifeijvli
//COURSE SCALE
/*
Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
Rotate((paraInta-paraInta10)*PI_180,Ox,Oy);
Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
Rotate((paraInta-paraInta10-10)*PI_180,Ox,Oy);
Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
Rotate((paraInta-paraInta10-20)*PI_180,Ox,Oy);
Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
Int2Str(degree2,Ox-COURSEWIDTH/2+2,Oy-RADIUS3-SCALEHIGHT1-COURSEHIGHT,GREEN1,!BFINALRESULT);
Rotate((paraInta-paraInta10-30)*PI_180,Ox,Oy);
Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
Rotate((paraInta-paraInta10-40)*PI_180,Ox,Oy);
Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
Rotate((paraInta-paraInta10-50)*PI_180,Ox,Oy);
Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
Rotate((paraInta-paraInta10+10)*PI_180,Ox,Oy);
Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
Rotate((paraInta-paraInta10+20)*PI_180,Ox,Oy);
Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
Rotate((paraInta-paraInta10+30)*PI_180,Ox,Oy);
Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
Int2Str(degree1,Ox-COURSEWIDTH/2+2,Oy-RADIUS3-SCALEHIGHT1-COURSEHIGHT,GREEN1,!BFINALRESULT);
Rotate((paraInta-paraInta10+40)*PI_180,Ox,Oy);
Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
Rotate((paraInta-paraInta10+50)*PI_180,Ox,Oy);
Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
Rotate((paraInta-paraInta10+60)*PI_180,Ox,Oy);
*/
for(i=0;i<=11;i++)
{
Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3-SCALEHIGHT,GREEN1,!BFINALRESULT);
Rotate((paraInta-paraInta10-50+i*10)*PI_180,Ox,Oy);
}
x1=Ox-COURSEWIDTH/2;
y1=Oy-RADIUS3-SCALEHIGHT1-COURSEHIGHT;
x2=Ox+COURSEWIDTH/2;
y2=Oy-RADIUS3-SCALEHIGHT1;
Line(x1,y1,x2,y1,TEST2,BFINALRESULT);
Line(x2,y1,x2,y2,TEST2,BFINALRESULT);
Line(x2,y2,x1,y2,TEST2,BFINALRESULT);
Line(x1,y2,x1,y1,TEST2,BFINALRESULT);
Int2Str(paraInta,Ox-COURSEWIDTH/2+2,Oy-RADIUS3-SCALEHIGHT1-COURSEHIGHT,CAMBLUE,BFINALRESULT,0);
//inside box and needle
Line(Ox,Oy-RADIUS,Ox,Oy-RADIUS-SCALEHIGHT,GREEN1,!BFINALRESULT);
PutChar('S',Ox-5,Oy-RADIUS-SCALEHIGHT-SCALEHIGHT1,GREEN1,!BFINALRESULT);
Rotate((paraInta-HALFANGLE)*PI_180,Ox,Oy);
Line(Ox,Oy-RADIUS,Ox,Oy-RADIUS-SCALEHIGHT,GREEN1,!BFINALRESULT);
PutChar('E',Ox-5,Oy-RADIUS-SCALEHIGHT-SCALEHIGHT1,GREEN1,!BFINALRESULT);
Rotate((paraInta-90)*PI_180,Ox,Oy);
Line(Ox,Oy-RADIUS,Ox,Oy-RADIUS-SCALEHIGHT,GREEN1,!BFINALRESULT);
PutChar('N',Ox-5,Oy-RADIUS-SCALEHIGHT-SCALEHIGHT1,GREEN1,!BFINALRESULT);
Rotate((paraInta-WHOLEANGLE)*PI_180,Ox,Oy);
Line(Ox,Oy-RADIUS,Ox,Oy-RADIUS-SCALEHIGHT,GREEN1,!BFINALRESULT);
PutChar('W',Ox-5,Oy-RADIUS-SCALEHIGHT-SCALEHIGHT1,GREEN1,!BFINALRESULT);
Rotate((paraInta-270)*PI_180,Ox,Oy);
//end of inside box an needle
//liangcheng
Int2Str(g_nParameters[11],RIGHT,(LINE1+LINE2)/2,GREEN1,BFINALRESULT,0);
PutChar('@',RIGHT+10,LINE1,GREEN1,BFINALRESULT);
PutChar('@',RIGHT+10,LINE2,GREEN1,!BFINALRESULT);
Rotate(PI,RIGHT+15,LINE2+5);
Int2Str(g_nParameters[11]*2/3,Ox-(RADIUS2-10),Oy-(RADIUS2-30),CAMBLUE,BFINALRESULT,0);
Int2Str(g_nParameters[11]*2/3,Ox+(RADIUS2-30),Oy-(RADIUS2-30),CAMBLUE,BFINALRESULT,0);
//END OF LIANGCHENG
//MENU KEY
if(!bTcnfaf)
StringOut("CRUISE",ROW1,BOTTOM,GREEN1,BFINALRESULT);
StringOut("BRIF",ROW5,BOTTOM,GREEN1,BFINALRESULT);
if(bAdf)
{
color=PURPLE1;
/*PutChar('A',RIGHT,LINE3-COURSEHIGHT,PURPLE1,BFINALRESULT);
PutChar('D',RIGHT,LINE3,PURPLE1,BFINALRESULT);
PutChar('F',RIGHT,LINE3+COURSEHIGHT,PURPLE1,BFINALRESULT);*/
}
else
{
color=GREEN1;
}
PutChar('A',RIGHT,LINE3-COURSEHIGHT,color,BFINALRESULT);
PutChar('D',RIGHT,LINE3,color,BFINALRESULT);
PutChar('F',RIGHT,LINE3+COURSEHIGHT,color,BFINALRESULT);
/* if(bTcn)
{
PutChar('T',RIGHT,LINE4-COURSEHIGHT,PURPLE1,BFINALRESULT);
PutChar('C',RIGHT,LINE4,PURPLE1,BFINALRESULT);
PutChar('N',RIGHT,LINE4+COURSEHIGHT,PURPLE1,BFINALRESULT);
}*/
if(bTcn)color=PURPLE1;
PutChar('T',RIGHT,LINE4-COURSEHIGHT,color,BFINALRESULT);
PutChar('C',RIGHT,LINE4,color,BFINALRESULT);
PutChar('N',RIGHT,LINE4+COURSEHIGHT,color,BFINALRESULT);
//END OF MENU KEY
//PLANE
Line(Ox-10,Oy,Ox+10,Oy,CAMBLUE,BFINALRESULT);
Line(Ox,Oy-10,Ox,Oy+15,CAMBLUE,BFINALRESULT);
Line(Ox-5,Oy+12,Ox+5,Oy+12,CAMBLUE,BFINALRESULT);
//END OF PLANE
//TIME
hour=(g_nParameters[15]>>16)&0xff;
minute=(g_nParameters[15]>>8)&0xff;
second=g_nParameters[15]&0xff;
if(hour>=24||minute>=60||second>=60)
{
StringOut("TIME ERROR",Ox-40,Oy+RADIUS+40,RED,BFINALRESULT);
}
else
{
if(hour<10)sprintf(cTime,"0%d:",hour);
else sprintf(cTime,"%d:",hour);
if(minute<10)sprintf(cMinute,"0%d:",minute);
else sprintf(cMinute,"%d:",minute);
if(second<10)sprintf(cSecond,"0%d",second);
else sprintf(cSecond,"%d",second);
strcat(cTime,cMinute);
strcat(cTime,cSecond);
StringOut(cTime,Ox-40,Oy+RADIUS+40,CAMBLUE,BFINALRESULT);
}
// END OF TIME
//ying fei hangxing and daifeijvli
if(bTcn)
{
sprintf(cHangx,"BRG-%d$",g_nParameters[17]);
StringOut(cHangx,ROW5-30,LINE5-80,CAMBLUE,BFINALRESULT);
sprintf(cJl,"DIS-%dnm",g_nParameters[18]);
StringOut(cJl,ROW5-30,LINE5-100,CAMBLUE,BFINALRESULT);
sprintf(cHangx,"CRS-%d$",g_nParameters[19]);
StringOut(cHangx,ROW5-30,LINE5-60,CAMBLUE,BFINALRESULT);
}
else
{
paraIntb=(int)(g_nParameters[13]+0.5);//yingfeihangxiang
paraIntc=(int)(g_nParameters[14]+0.5);//daifeijvli
sprintf(cHangx,"%d$",g_nParameters[13]);
StringOut(cHangx,ROW5,LINE5-55,CAMBLUE,BFINALRESULT);
sprintf(cJl,"%dnm",g_nParameters[14]);
StringOut(cJl,ROW5,LINE5-75,CAMBLUE,BFINALRESULT);
}
//end of ying fei hangxing and daifeijvli
//arrowhead
Line(Ox,Oy-RADIUS3,Ox-4,Oy-RADIUS3+8,CAMBLUE,!BFINALRESULT);
Line(Ox,Oy-RADIUS3,Ox+4,Oy-RADIUS3+8,CAMBLUE,!BFINALRESULT);
Line(Ox,Oy-RADIUS,Ox-4,Oy-RADIUS+8,CAMBLUE,!BFINALRESULT);
Line(Ox,Oy-RADIUS,Ox+4,Oy-RADIUS+8,CAMBLUE,!BFINALRESULT);
Line(Ox,Oy+RADIUS,Ox-4,Oy+RADIUS+8,CAMBLUE,!BFINALRESULT);
Line(Ox,Oy+RADIUS,Ox+4,Oy+RADIUS+8,CAMBLUE,!BFINALRESULT);
Rotate((g_nParameters[12]-g_nParameters[13])*PI_180,Ox,Oy);
//arrowhead
//hangludian
if(bNOTNav)
{
for(i=0;i<num;i++)
PutChar('&',psx[i]-8,psy[i]-8,CAMBLUE,BFINALRESULT);
Line(Ox,Oy,psx[0],psy[0],YELLOW,BFINALRESULT);
for(i=0;i<num-1;i++)
Line(psx[i],psy[i],psx[i+1],psy[i+1],YELLOW,BFINALRESULT);
}
//end of hangludian
/* PutChar('+',Ox-200,Oy+RADIUS+10,GREEN1,BFINALRESULT);
PutChar('-',Ox-160,Oy+RADIUS+10,GREEN1,BFINALRESULT);
PutChar('%',Ox-120,Oy+RADIUS+10,GREEN1,BFINALRESULT);
PutChar(':',Ox-80,Oy+RADIUS+10,GREEN1,BFINALRESULT);
PutChar('.',Ox-40,Oy+RADIUS+10,GREEN1,BFINALRESULT);
PutChar('@',Ox-20,Oy+RADIUS+10,GREEN1,BFINALRESULT);
PutChar('$',Ox,Oy+RADIUS+10,GREEN1,BFINALRESULT);
PutChar('^',Ox+40,Oy+RADIUS+10,GREEN1,BFINALRESULT);
PutChar('#',Ox+80,Oy+RADIUS+10,GREEN1,BFINALRESULT);
PutChar('&',Ox+120,Oy+RADIUS+10,GREEN1,BFINALRESULT);
// }///////////bhepdata end*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -