⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nav.c

📁 源程序是在VisualDSP环境下开发出来的
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -