📄 nav.c
字号:
#include <math.h>
#include "hddamacros.h"
#include "globalvar.h"
#include "drawgraph.h"
#include "textout.h"
#include "asmfunctions.h"
#include "stdio.h"
#define Integer10(x) (int)(x/10)*10+10
int Ox=NAVCENTERX,Oy=NAVCENTERY,num,i;
int psx[20],psy[20];
float psl[20],psd[20];
/////////////////
bool bHepData=false;
bool bAdf=false;
bool bArte=false;
bool bHep=false;
bool bWpnt=false;
bool bScrs=false;
bool bPpuc=false;
bool bTcn=false;
bool bTcnfaf=false;
bool bScafaf=false;
bool bScarwy=false;
/////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
void jshld(int psdnum,int pslnum)
{
for(i=0;i<num;i++)
{
psd[i]=g_nParameters[psdnum+i*2];
psl[i]=g_nParameters[pslnum+i*2]*RADIUS3/g_nParameters[11];
}
for(i=0;i<num;i++)
{
psx[i]=(int)(Ox+psl[i]*cos((psd[i]-g_nParameters[12]-HALFANGLE/2)*PI_180));
psy[i]=(int)(Oy+psl[i]*sin((psd[i]-g_nParameters[12]-HALFANGLE/2)*PI_180));
}
}
////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
void ARTEproc()
{
StringOut("ARTE",LEFT,TOP,YELLOW,BFINALRESULT);
num=(int)g_nParameters[16];
jshld(17,18);
/* for(i=0;i<num;i++)
{
psd[i]=g_nParameters[17+i*2];
psl[i]=g_nParameters[18+i*2]*RADIUS3/g_nParameters[11];
}
for(i=0;i<num;i++)
{
psx[i]=(int)(Ox+psl[i]*cos((psd[i]-g_nParameters[12]-HALFANGLE/2)*PI_180));
psy[i]=(int)(Oy+psl[i]*sin((psd[i]-g_nParameters[12]-HALFANGLE/2)*PI_180));
}*/
bArte=true;
}
//////////////////////////////////////////////////////////////////////////
void WPNTproc()
{
int selp,selx,sely;
float seld,sell;
selp=g_nParameters[16];
StringOut("NAV",LEFT,TOP+50,YELLOW,BFINALRESULT);
num=(int)g_nParameters[19];
seld=g_nParameters[17];
sell=g_nParameters[18]*RADIUS3/g_nParameters[11];
selx=(int)(Ox+sell*cos((seld-g_nParameters[12]-HALFANGLE/2)*PI_180));
sely=(int)(Oy+sell*sin((seld-g_nParameters[12]-HALFANGLE/2)*PI_180));
/* for(i=0;i<num;i++)
{
psd[i]=g_nParameters[20+i*2];
psl[i]=g_nParameters[21+i*2]*RADIUS3/g_nParameters[11];
}
for(i=0;i<num;i++)
{
psx[i]=(int)(Ox+psl[i]*cos((psd[i]-g_nParameters[12]-HALFANGLE/2)*PI_180));
psy[i]=(int)(Oy+psl[i]*sin((psd[i]-g_nParameters[12]-HALFANGLE/2)*PI_180));
}*/
jshld(20,21);
Int2Str(selp,psx[selp-1]+8,psx[selp-1],YELLOW,BFINALRESULT,0);
Line(psx[selp-1],psy[selp-1],selx,sely,CAMBLUE,BFINALRESULT|DASHED);
bWpnt=true;
}
//////////////////////////////////////////////////////////////
void SCRSproc()
{
int psxB[20],psyB[20],numB;
float pslB[20],psdB[20];
StringOut("SCRC",LEFT,TOP+50,YELLOW,BFINALRESULT);
num=(int)g_nParameters[17];
numB=(int)g_nParameters[24];
jshld(18,19);
/*
for(i=0;i<num;i++)
{
psd[i]=g_nParameters[18+i*2];
psl[i]=g_nParameters[19+i*2]*RADIUS3/g_nParameters[11];
}
for(i=0;i<num;i++)
{
psx[i]=(int)(Ox+psl[i]*cos((psd[i]-g_nParameters[12]-HALFANGLE/2)*PI_180));
psy[i]=(int)(Oy+psl[i]*sin((psd[i]-g_nParameters[12]-HALFANGLE/2)*PI_180));
}*/
for(i=0;i<numB;i++)
{
psdB[i]=g_nParameters[25+i*2];
pslB[i]=g_nParameters[26+i*2]*RADIUS3/g_nParameters[11];
}
for(i=0;i<numB;i++)
{
psxB[i]=(int)(Ox+pslB[i]*cos((psdB[i]-g_nParameters[12]-HALFANGLE/2)*PI_180));
psyB[i]=(int)(Oy+pslB[i]*sin((psdB[i]-g_nParameters[12]-HALFANGLE/2)*PI_180));
}
Int2Str(psxB[1],ROW3,LINE3,GREEN1,BFINALRESULT,0);
// Line(psxB[0],psyB[0],psxB[1],psyB[1],CAMBLUE,BFINALRESULT);
for(i=0;i<numB;i++)
PutChar('&',psxB[i]-8,psyB[i]-8,YELLOW,BFINALRESULT);
for(i=0;i<numB-1;i++)
Line(psxB[i],psyB[i],psxB[i+1],psyB[i+1],CAMBLUE,BFINALRESULT);
Line(Ox,Oy,psxB[2],psyB[2],PURPLE1,BFINALRESULT);
bScrs=true;
}
////////////////////////////////////////////////////////////
void PPUCproc()
{
int selp,selx,sely;
float seld,sell;
selp=g_nParameters[16];
StringOut("PPUC",LEFT,TOP+50,YELLOW,BFINALRESULT);
num=(int)g_nParameters[19];
seld=g_nParameters[17];
sell=g_nParameters[18]*RADIUS3/g_nParameters[11];
selx=(int)(Ox+sell*cos((seld-g_nParameters[12]-HALFANGLE/2)*PI_180));
sely=(int)(Oy+sell*sin((seld-g_nParameters[12]-HALFANGLE/2)*PI_180));
/* for(i=0;i<num;i++)
{
psd[i]=g_nParameters[20+i*2];
psl[i]=g_nParameters[21+i*2]*RADIUS3/g_nParameters[11];
}
for(i=0;i<num;i++)
{
psx[i]=(int)(Ox+psl[i]*cos((psd[i]-g_nParameters[12]-HALFANGLE/2)*PI_180));
psy[i]=(int)(Oy+psl[i]*sin((psd[i]-g_nParameters[12]-HALFANGLE/2)*PI_180));
}*/
jshld(20,21);
Int2Str(2,psx[1]+8,psx[1],YELLOW,BFINALRESULT,0);
Line(psx[selp-1],psy[selp-1],Ox,Oy,CAMBLUE,BFINALRESULT);
bPpuc=true;
}
/////////////////////////////////////////////////////////////////
void HEPproc()
{
int psxP[20],psyP[20],numP,mnumP,mtimem,mtimes,ml,md;
char cmnump[8],cmtime[8],cml[8],cmd[8],temp[8],temp1[8];
float pslP[20],psdP[20];
StringOut("HEP",LEFT,TOP,YELLOW,BFINALRESULT);
if(g_nParameters[4]==1)
{
bHepData=true;
return;
}
StringOut("DATA",ROW4,TOP+50,GREEN1,BFINALRESULT);
num=(int)g_nParameters[16];
numP=(int)g_nParameters[2*num+17];
jshld(17,18);
/* for(i=0;i<num;i++)
{
psd[i]=g_nParameters[17+i*2];
psl[i]=g_nParameters[18+i*2]*RADIUS3/g_nParameters[11];
}
for(i=0;i<num;i++)
{
psx[i]=(int)(Ox+psl[i]*cos((psd[i]-g_nParameters[12]-HALFANGLE/2)*PI_180));
psy[i]=(int)(Oy+psl[i]*sin((psd[i]-g_nParameters[12]-HALFANGLE/2)*PI_180));
}*/
for(i=0;i<numP;i++)
{
psdP[i]=g_nParameters[2*num+18+i*2];
pslP[i]=g_nParameters[2*num+19+i*2]*RADIUS3/g_nParameters[11];
}
for(i=0;i<numP;i++)
{
psxP[i]=(int)(Ox+pslP[i]*cos((psdP[i]-g_nParameters[12]-HALFANGLE/2)*PI_180));
psyP[i]=(int)(Oy+pslP[i]*sin((psdP[i]-g_nParameters[12]-HALFANGLE/2)*PI_180));
}
mnumP=g_nParameters[18+2*(num+numP)];
mtimem=(g_nParameters[19+2*(num+numP)]>>8)&0xff;
mtimes=g_nParameters[19+2*(num+numP)]&0xff;
ml=g_nParameters[20+2*(num+numP)];
md=g_nParameters[21+2*(num+numP)];
// Int2Str(md,400,300,YELLOW,BFINALRESULT);
for(i=1;i<numP;i++)
{
// PortRect(psxP[i],psyP[i],GREEN1,BFINALRESULT);
if(i<10)
{
sprintf(temp,"0%d",i);
StringOut(temp,psxP[i],psyP[i]-20,GREEN1,BFINALRESULT);
}
else
{
Int2Str(i,psxP[i],psyP[i]-20,GREEN1,BFINALRESULT,0);
}
}
// PortRect(psxP[0],psyP[0],YELLOW,BFINALRESULT);
StringOut("00",psxP[0],psyP[0]-20,YELLOW,BFINALRESULT);
StringOut("00",LEFT,LINE4,YELLOW,BFINALRESULT);
sprintf(temp,"%x:",mtimem);
sprintf(temp1,"%x",mtimes);
strcat(temp,temp1);
StringOut(temp,LEFT,LINE4+COURSEHIGHT,YELLOW,BFINALRESULT);
sprintf(temp,"%dnm",ml);
StringOut(temp,LEFT,LINE4+2*COURSEHIGHT,YELLOW,BFINALRESULT);
sprintf(temp,"%d$",md);
StringOut(temp,LEFT,LINE4+3*COURSEHIGHT+5,YELLOW,BFINALRESULT);
bHep=true;
}
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
void ADFproc()
{
// int adfd=g_nParameters[16];
StringOut("ADF",LEFT,TOP+50,YELLOW,BFINALRESULT);
num=(int)g_nParameters[17];
/*
for(i=0;i<num;i++)
{
psd[i]=g_nParameters[18+i*2];
psl[i]=g_nParameters[19+i*2]*RADIUS3/g_nParameters[11];
}
for(i=0;i<num;i++)
{
psx[i]=(int)(Ox+psl[i]*cos((psd[i]-g_nParameters[12]-HALFANGLE/2)*PI_180));
psy[i]=(int)(Oy+psl[i]*sin((psd[i]-g_nParameters[12]-HALFANGLE/2)*PI_180));
}*/
jshld(18,19);
bAdf=true;
Line(Ox,Oy-RADIUS3,Ox,Oy-RADIUS3+SCALEHIGHT,BLUE,!BFINALRESULT);
Line(Ox,Oy-RADIUS3+SCALEHIGHT,Ox-9,Oy-RADIUS3+2*SCALEHIGHT,BLUE,!BFINALRESULT);
Line(Ox,Oy-RADIUS3+SCALEHIGHT,Ox+9,Oy-RADIUS3+2*SCALEHIGHT,BLUE,!BFINALRESULT);
Line(Ox+9,Oy-RADIUS3+2*SCALEHIGHT,Ox-9,Oy-RADIUS3+2*SCALEHIGHT,BLUE,!BFINALRESULT);
Rotate((g_nParameters[12]-g_nParameters[16])*PI_180,Ox,Oy);
}
/////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
void TCNproc()
{
int dtcn;
StringOut("TCN",LEFT,TOP+50,YELLOW,BFINALRESULT);
num=(int)g_nParameters[20];
/* for(i=0;i<num;i++)
{
psd[i]=g_nParameters[21+i*2];
psl[i]=g_nParameters[22+i*2]*RADIUS3/g_nParameters[11];
}
for(i=0;i<num;i++)
{
psx[i]=(int)(Ox+psl[i]*cos((psd[i]-g_nParameters[12]-HALFANGLE/2)*PI_180));
psy[i]=(int)(Oy+psl[i]*sin((psd[i]-g_nParameters[12]-HALFANGLE/2)*PI_180));
}*/
jshld(21,22);
bTcn=true;
dtcn=(int)g_nParameters[18]*RADIUS3/g_nParameters[11];
Line(Ox,Oy,Ox,Oy-dtcn,YELLOW,!BFINALRESULT);
Line(Ox-6,Oy-dtcn,Ox+6,Oy-dtcn,YELLOW,!BFINALRESULT);
Line(Ox-6,Oy-dtcn,Ox,Oy-dtcn-10,YELLOW,!BFINALRESULT);
Line(Ox,Oy-dtcn-10,Ox+6,Oy-dtcn,YELLOW,!BFINALRESULT);
Rotate(-g_nParameters[16]*PI_180,Ox,Oy);
}
/////////////////////////////////////////////////////////////////
void TCN_FAFproc()
{
char temp2[10];
int fafzx,fafzy,fafyx,fafyy,fafdy,fafdx,airportx,airporty;
float tempd,templ;
StringOut("TCN",LEFT,TOP,YELLOW,BFINALRESULT);
sprintf(temp2,"DIS-%d",g_nParameters[17]);
StringOut(temp2,ROW1+20,BOTTOM-60,CAMBLUE,BFINALRESULT);
sprintf(temp2,"BRG-%d$",g_nParameters[16]);
StringOut(temp2,ROW1+20,BOTTOM-30,CAMBLUE,BFINALRESULT);
sprintf(temp2,"MCRS-%d$",g_nParameters[18]);
StringOut(temp2,ROW1+20,BOTTOM,CAMBLUE,BFINALRESULT);
bTcnfaf=true;
StringOut("FAF",ROW1+20,TOP,YELLOW,BFINALRESULT);
tempd=g_nParameters[20];//
templ=g_nParameters[21]*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[22];//
templ=g_nParameters[23]*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[24];//
templ=g_nParameters[25]*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[26];//
templ=g_nParameters[27]*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[19],airportx,airporty,CAMBLUE,BFINALRESULT,0);
DrawArc(airportx+12,airporty+10,airportx,airporty,WHOLEANGLE,PURPLE1,BFINALRESULT);//ji chang
}
///////////////////////////////////////////////////////////////////
void SCA_FAFproc()
{
int fafzx,fafzy,fafyx,fafyy,fafdy,fafdx,airportx,airporty;
float tempd,templ;
StringOut("SCA",LEFT,TOP,YELLOW,BFINALRESULT);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -