📄 efis5.c
字号:
#include <math.h>
#include "hddamacros.h"
#include "globalvar.h"
#include "drawgraph.h"
#include "textout.h"
#include "asmfunctions.h"
void fanproc(void);
void cruiseproc(void);
void HSIproc(void);
static float SEBallAngle=0;
int OxSEBall=260,OySEBall=262;
int yofgauge=112,xofgauge0=100,xofgauge1=500,xofgauge2=600;
int heightofgauge=300;
int shortscale=5,longscale=10;
int orgnumofresult,orgnumofrotatedresult;
int interval0=28,interval1=30,interval2=20;
int i,j;
int temp0,temp1;
float floattemp0,floattemp1;
static float valueofgauge0=292.0,valueofgauge1=1.333,valueofgauge2=-8;
static float valueofelevation=-10,valueofdirection=0,valueofselectdirection=315;
static float valueofselectway=310,valueofdirectionoffset=0,valueofBRG=50;
static float valueofM=0.45,valueofAOA=11,valueofDH=200,valueofheight=220,valueofALP=823;
float yvalueofgauge2;
static int g_ndirection=0;
void EFISproc(void)
{
switch(g_nParameters[3])
{
case 35: fanproc();break;
case 31: cruiseproc();break;
case 32: cruiseproc();break;
case 34: HSIproc();break;
case 33: cruiseproc();break;
default: break;
}
return;
}
void cruiseproc(void)
{
/*static int SEBallAngle=0;
int OxSEBall=260,OySEBall=262;
int yofgauge=112,xofgauge0=100,xofgauge1=500,xofgauge2=600;
int heightofgauge=300;
int shortscale=5,longscale=10;
int orgnumofresult,orgnumofrotatedresult;
int interval0=28,interval1=30,interval2=20;
int i,j;
int temp0,temp1;
float floattemp0;
static float valueofgauge0=292,valueofgauge1=1.333,valueofgauge2=-8;
static float valueofelevation=-10,valueofdirection=0,valueofselectdirection=300;
static float valueofselectway=310,valueofdirectionoffset=0;
static float valueofM=0.45,valueofAOA=11,valueofDH=200,valueofheight=220,valueofALP=823;
int yvalueofgauge2;*/
//////////////////////////////////////////////////RiseSpeed
orgnumofresult=g_nNumOfResult;
Line(xofgauge2,yofgauge,xofgauge2,yofgauge+heightofgauge,WHITE,BFINALRESULT);
for (i=-7;i<8;i++)
{
switch(abs(i))
{
case 1: j=i;
case 3: Line(xofgauge2,OySEBall-i*interval2,xofgauge2+shortscale,OySEBall-i*interval2,WHITE,BFINALRESULT);break;
default: Line(xofgauge2,OySEBall-i*interval2,xofgauge2+longscale,OySEBall-i*interval2,WHITE,BFINALRESULT);
}
}
//valueofgauge2=max(valueofgauge2,-8);valueofgauge2=min(valueofgauge2,8);
//valueofgauge2=g_nParameters[?];
if(valueofgauge2<=2&&valueofgauge2>=-2)
yvalueofgauge2=OySEBall-valueofgauge2*2*interval2;
else if(valueofgauge2>2)
yvalueofgauge2=OySEBall-((valueofgauge2-2)*0.5+4)*interval2;
else
yvalueofgauge2=OySEBall-((valueofgauge2+2)*0.5-4)*interval2;
TransparentizeRect(orgnumofresult,g_nNumOfRotatedResult,xofgauge2-5,yvalueofgauge2-2,xofgauge2+5,yvalueofgauge2+2);
HollowRect(xofgauge2-5,yvalueofgauge2-2,xofgauge2+5,yvalueofgauge2+2,WHITE,BFINALRESULT);
for (i=-7;i<=7;i++)
{
if(!(i&1)&&abs(i)<=4)
{
Int2Str(abs(i/2),xofgauge2+longscale,OySEBall+i*interval2-10,WHITE,BFINALRESULT,0);
}
if(abs(i)>4)
{
Int2Str(2*abs(i)-6,xofgauge2+longscale,OySEBall+i*interval2-10,WHITE,BFINALRESULT,0);
}
}
//////////////////////////////////////////////////AirpressHeight
Line(xofgauge1,yofgauge,xofgauge1,yofgauge+heightofgauge,WHITE,BFINALRESULT);
Line(xofgauge1,OySEBall,xofgauge1-10,OySEBall,WHITE,BFINALRESULT);
temp0=valueofgauge1/0.02;
temp0*=1000*0.02;
temp1=valueofgauge1*1000;
//for (i=temp0-90;i<=temp0+100;i+=10)
for (i=temp0-90;i<=temp0+100;i+=10)
{
if(i%100==0)
{
Line(xofgauge1,OySEBall-(i-temp1)*0.05*interval1,xofgauge1+longscale,OySEBall-(i-temp1)*0.05*interval1,WHITE,BFINALRESULT);
Int2Str(i,xofgauge1+longscale+2,OySEBall-(i-temp1)*0.05*interval1-10,WHITE,BFINALRESULT,0);
// Int2Str(i/1000,xofgauge1+longscale+2,OySEBall-(i-temp1)*0.05*interval1-10,WHITE,BFINALRESULT);
}
else if(i%20==0)
{
Line(xofgauge1,OySEBall-(i-temp1)*0.05*interval1,xofgauge1+shortscale,OySEBall-(i-temp1)*0.05*interval1,WHITE,BFINALRESULT);
}
}
//////////////////////////////////////////////////TrueSpeed
Line(xofgauge0,yofgauge,xofgauge0,yofgauge+heightofgauge,WHITE,BFINALRESULT);
orgnumofresult=g_nNumOfResult;
temp0=valueofgauge0/20;
temp0*=20;//floattemp0=floattemp1=valueofgauge0;
temp1=valueofgauge0/10;
temp1*=10;
for (i=temp0-90;i<=temp0+100;i+=10)
{
if(i%40==0)
{
Line(xofgauge0,OySEBall-(i-valueofgauge0)*0.05*interval0,xofgauge0+longscale,OySEBall-(i-valueofgauge0)*0.05*interval0,WHITE,BFINALRESULT);
Int2Str(i,xofgauge0-40,OySEBall-(i-valueofgauge0)*0.05*interval0-10,WHITE,BFINALRESULT,0);
}
else if (i%20==0)
{
Line(xofgauge0,OySEBall-(i-valueofgauge0)*0.05*interval0,xofgauge0+shortscale,OySEBall-(i-valueofgauge0)*0.05*interval0,WHITE,BFINALRESULT);
}
}
TransparentizeRect(orgnumofresult,g_nNumOfRotatedResult,xofgauge0-30,OySEBall-interval0-7,xofgauge0+longscale,OySEBall+interval0+7);
TransparentizeRect(orgnumofresult,g_nNumOfRotatedResult,xofgauge0-60,OySEBall-0.5*interval0,xofgauge0+longscale,OySEBall+0.5*interval0);
Line(xofgauge0-60,OySEBall-0.5*interval0,xofgauge0-60,OySEBall+0.5*interval0,WHITE,BFINALRESULT);
Line(xofgauge0-60,OySEBall-0.5*interval0,xofgauge0-30,OySEBall-0.5*interval0,WHITE,BFINALRESULT);
Line(xofgauge0-60,OySEBall+0.5*interval0,xofgauge0-30,OySEBall+0.5*interval0,WHITE,BFINALRESULT);
Line(xofgauge0-30,OySEBall-interval0-7,xofgauge0,OySEBall-interval0-7,WHITE,BFINALRESULT);
Line(xofgauge0-30,OySEBall+interval0+7,xofgauge0,OySEBall+interval0+7,WHITE,BFINALRESULT);
Line(xofgauge0-30,OySEBall-interval0-7,xofgauge0-30,OySEBall-0.5*interval0,WHITE,BFINALRESULT);
Line(xofgauge0-30,OySEBall+interval0+7,xofgauge0-30,OySEBall+0.5*interval0,WHITE,BFINALRESULT);
Int2Str(temp1,xofgauge0-60,OySEBall-10,WHITE,BFINALRESULT,0);
temp0=floattemp0=valueofgauge0-temp1;
Line(xofgauge0-1,OySEBall+(floattemp0-temp0)*interval0,xofgauge0+shortscale,OySEBall+(floattemp0-temp0)*interval0,WHITE,BFINALRESULT);
Int2Str(temp0,xofgauge0-15,OySEBall+(floattemp0-temp0)*interval0-10,WHITE,BFINALRESULT,0);
Line(xofgauge0-1,OySEBall-(1-floattemp0+temp0)*interval0,xofgauge0+shortscale,OySEBall-(1-floattemp0+temp0)*interval0,WHITE,BFINALRESULT);
temp1=temp0+1;
if(temp1>=10) temp1=0;
Int2Str(temp1,xofgauge0-15,OySEBall-(1-floattemp0+temp0)*interval0-10,WHITE,BFINALRESULT,0);
////////////////////////////////////////////////////COMP or cruise or APR
temp0=valueofelevation/5;
temp0*=10;
//g_nParameters[5]=1;
///////////////////////////////////////////////////Elevation-Roll of COMP
////////////////////////////////////////////////SkyEarthBall
SkyEarthBall(SEBallAngle++,OxSEBall,OySEBall,valueofelevation/100*20);
if(g_nParameters[3]==33)
{
orgnumofresult=g_nNumOfResult;
orgnumofrotatedresult=g_nNumOfRotatedResult;
for (i=temp0-20;i<=temp0+30;i+=10)
{
if(i%20==0)
{
Line(OxSEBall-25,OySEBall-(i-valueofelevation*2)*0.1*interval0,OxSEBall+25,OySEBall-(i-valueofelevation*2)*0.1*interval0,WHITE,BFINALRESULT);
//Rotate(3.14159*SEBallAngle/180,OxSEBall,OySEBall);
Int2Str(abs(i/2),OxSEBall+27,OySEBall-(i-valueofelevation*2)*0.1*interval0-10,WHITE,BFINALRESULT,0);
//Rotate(3.14159*SEBallAngle/180,OxSEBall,OySEBall);
}
else if (i%10==0)
{
Line(OxSEBall-15,OySEBall-(i-valueofelevation*2)*0.1*interval0,OxSEBall+15,OySEBall-(i-valueofelevation*2)*0.1*interval0,WHITE,BFINALRESULT);
//Rotate(3.14159*SEBallAngle/180,OxSEBall,OySEBall);
}
}
TransparentizeRect(orgnumofresult,g_nNumOfRotatedResult,OxSEBall-30,OySEBall-5,OxSEBall+60,OySEBall+interval0*4);
///////////////////////////////////////////////////DirectionScale
Line(OxSEBall,OySEBall+40,OxSEBall-15/tan(60*3.14159/180),OySEBall+25,WHITE,BFINALRESULT);
Line(OxSEBall-15/tan(60*3.14159/180),OySEBall+25,OxSEBall+15/tan(60*3.14159/180),OySEBall+25,WHITE,BFINALRESULT);
Line(OxSEBall+15/tan(60*3.14159/180),OySEBall+25,OxSEBall,OySEBall+40,WHITE,BFINALRESULT);
temp0=valueofselectdirection-valueofdirection+0.5;
//if(temp0>=360) temp0-=360;
if(temp0<0) temp0+=360;
if(temp0<=30||temp0>=330)
{
HollowRect(OxSEBall-10,OySEBall+30,OxSEBall+10,OySEBall+40,WHITE,!BFINALRESULT);
Line(OxSEBall,OySEBall+30,OxSEBall,OySEBall+40,WHITE,!BFINALRESULT);
Rotate(-(valueofselectdirection-valueofdirection)*3.14159/180,OxSEBall,OySEBall+g_nSkyEarthBallRadius);
}
temp0=valueofdirection/5;
temp0*=10;
for (i=temp0-50;i<=temp0+60;i+=10)
{
if(i%20==0)
{
Line(OxSEBall,OySEBall+40,OxSEBall,OySEBall+48,WHITE,!BFINALRESULT);
Rotate(-3.14159*(i-valueofdirection*2)*0.5/180,OxSEBall,OySEBall+g_nSkyEarthBallRadius);
}
else if (i%10==0)
{
Line(OxSEBall,OySEBall+40,OxSEBall,OySEBall+45,WHITE,!BFINALRESULT);
Rotate(-3.14159*(i-valueofdirection*2)*0.5/180,OxSEBall,OySEBall+g_nSkyEarthBallRadius);
}
}
temp0=(valueofdirection+30)/10;
if(temp0>=36) temp0-=36;
temp1=(valueofdirection-30)/10;
if(temp1<0) temp1+=36;
Int2Str(temp0,OxSEBall+35,OySEBall+62,WHITE,BFINALRESULT,0);
Int2Str(temp1,OxSEBall-65,OySEBall+62,WHITE,BFINALRESULT,0);
if(valueofdirection<=30||valueofdirection>=330)
{
PutChar('N',OxSEBall-11,OySEBall+50,WHITE,!BFINALRESULT);
Rotate(3.14159*valueofdirection/180,OxSEBall,OySEBall+g_nSkyEarthBallRadius);
}
temp0=valueofselectway-valueofdirection+0.5;
//if(temp0>=360) temp0-=360;
if(temp0<0) temp0+=360;
if(temp0>30&&temp0<=180) temp0=30;
if(temp0>180&&temp0<330) temp0=330;
Line(OxSEBall,OySEBall+80,OxSEBall,OySEBall+g_nSkyEarthBallRadius,WHITE,!BFINALRESULT);
Line(OxSEBall,OySEBall+90,OxSEBall-10/tan(3.14159*60/180),OySEBall+100,WHITE,!BFINALRESULT);
Line(OxSEBall-10/tan(3.14159*60/180),OySEBall+100,OxSEBall+10/tan(3.14159*60/180),OySEBall+100,WHITE,!BFINALRESULT);
Line(OxSEBall+10/tan(3.14159*60/180),OySEBall+100,OxSEBall,OySEBall+90,WHITE,!BFINALRESULT);
Rotate(-3.14159*temp0/180,OxSEBall,OySEBall+g_nSkyEarthBallRadius);
temp0=valueofselectway;
Int2Str(temp0,OxSEBall-g_nSkyEarthBallRadius*cos(3.14159*30/180),OySEBall+g_nSkyEarthBallRadius/4,WHITE,BFINALRESULT,0);
StringOut(1?"TO":" ",OxSEBall-g_nSkyEarthBallRadius*cos(3.14159*30/180),OySEBall+g_nSkyEarthBallRadius/4+20,WHITE,BFINALRESULT);
StringOut(1?"LOC":"LIN",OxSEBall-90,OySEBall+65,WHITE,BFINALRESULT|VERTICALSTRING);
temp0=valueofselectdirection;
Int2Str(temp0,OxSEBall+90,OySEBall+35,WHITE,BFINALRESULT,0);
}
//////////////////////////////////////////////////Elevation-Roll of APRandcruise
else if(g_nParameters[3]==31||g_nParameters[3]==32)
{
for (i=temp0-20;i<=temp0+30;i+=10)
{
if(i%20==0)
{
Line(OxSEBall-25,OySEBall-(i-valueofelevation*2)*0.1*interval0,OxSEBall+25,OySEBall-(i-valueofelevation*2)*0.1*interval0,WHITE,BFINALRESULT|NEEDMODIFY);
//Rotate(3.14159*SEBallAngle/180,OxSEBall,OySEBall);
Int2Str(abs(i/2),OxSEBall+27,OySEBall-(i-valueofelevation*2)*0.1*interval0-10,WHITE,BFINALRESULT|NEEDMODIFY,0);
//Rotate(3.14159*SEBallAngle/180,OxSEBall,OySEBall);
}
else if (i%10==0)
{
Line(OxSEBall-15,OySEBall-(i-valueofelevation*2)*0.1*interval0,OxSEBall+15,OySEBall-(i-valueofelevation*2)*0.1*interval0,WHITE,BFINALRESULT|NEEDMODIFY);
//Rotate(3.14159*SEBallAngle/180,OxSEBall,OySEBall);
}
}
}
//Rotate(SEBallAngle*PI_180,OxSEBall,OySEBall);
///////////////////////////////////////////////////runway
if(g_nParameters[3]==32)
{
Line(OxSEBall-20+valueofdirectionoffset,OySEBall+g_nSkyEarthBallRadius,OxSEBall-15+valueofdirectionoffset,OySEBall+90,GOLD,BFINALRESULT|NEEDMODIFY);
Line(OxSEBall-15+valueofdirectionoffset,OySEBall+90,OxSEBall+15+valueofdirectionoffset,OySEBall+90,GOLD,BFINALRESULT);
Line(OxSEBall+15+valueofdirectionoffset,OySEBall+90,OxSEBall+20+valueofdirectionoffset,OySEBall+g_nSkyEarthBallRadius,GOLD,BFINALRESULT|NEEDMODIFY);
Line(OxSEBall+20+valueofdirectionoffset,OySEBall+g_nSkyEarthBallRadius,OxSEBall-20+valueofdirectionoffset,OySEBall+g_nSkyEarthBallRadius,GOLD,BFINALRESULT);
Line(OxSEBall-5+valueofdirectionoffset,OySEBall+g_nSkyEarthBallRadius,OxSEBall-5+valueofdirectionoffset,OySEBall+120,GREEN1,BFINALRESULT);
Line(OxSEBall+5+valueofdirectionoffset,OySEBall+g_nSkyEarthBallRadius,OxSEBall+5+valueofdirectionoffset,OySEBall+120,GREEN1,BFINALRESULT);
}
////////////////////////////////////////////////AirplaneSymbol
Rectangle(OxSEBall-6,OySEBall-4,OxSEBall+6,OySEBall+4,BLACK,BFINALRESULT);
Rectangle(OxSEBall-90,OySEBall-4,OxSEBall-30,OySEBall+4,BLACK,BFINALRESULT);
Rectangle(OxSEBall+30,OySEBall-4,OxSEBall+90,OySEBall+4,BLACK,BFINALRESULT);
Rectangle(OxSEBall-35,OySEBall+5,OxSEBall-30,OySEBall+13,BLACK,BFINALRESULT);
Rectangle(OxSEBall+30,OySEBall+5,OxSEBall+36,OySEBall+13,BLACK,BFINALRESULT);
////////////////////////////////////////////////////TopScale
Line(OxSEBall,OySEBall-g_nSkyEarthBallRadius,OxSEBall,OySEBall-g_nSkyEarthBallRadius-20,WHITE,!BFINALRESULT);
Rotate(3.14159*10/180,OxSEBall,OySEBall);
Line(OxSEBall,OySEBall-g_nSkyEarthBallRadius,OxSEBall,OySEBall-g_nSkyEarthBallRadius-20,WHITE,!BFINALRESULT);
Rotate(3.14159*20/180,OxSEBall,OySEBall);
Line(OxSEBall,OySEBall-g_nSkyEarthBallRadius,OxSEBall,OySEBall-g_nSkyEarthBallRadius-20,WHITE,!BFINALRESULT);
Rotate(3.14159*30/180,OxSEBall,OySEBall);
Line(OxSEBall,OySEBall-g_nSkyEarthBallRadius,OxSEBall,OySEBall-g_nSkyEarthBallRadius-20,WHITE,!BFINALRESULT);
Rotate(-3.14159*10/180,OxSEBall,OySEBall);
Line(OxSEBall,OySEBall-g_nSkyEarthBallRadius,OxSEBall,OySEBall-g_nSkyEarthBallRadius-20,WHITE,!BFINALRESULT);
Rotate(-3.14159*20/180,OxSEBall,OySEBall);
Line(OxSEBall,OySEBall-g_nSkyEarthBallRadius,OxSEBall,OySEBall-g_nSkyEarthBallRadius-20,WHITE,!BFINALRESULT);
Rotate(-3.14159*30/180,OxSEBall,OySEBall);
Line(OxSEBall,OySEBall-g_nSkyEarthBallRadius,OxSEBall-20/tan(60*3.14159/180),OySEBall-g_nSkyEarthBallRadius-20,WHITE,BFINALRESULT|NEEDMODIFY);
DrawHorizontalLine(OxSEBall-20/tan(60*3.14159/180),OxSEBall+20/tan(60*3.14159/180),OySEBall-g_nSkyEarthBallRadius-20,WHITE,BFINALRESULT);
Line(OxSEBall+20/tan(60*3.14159/180),OySEBall-g_nSkyEarthBallRadius-20,OxSEBall,OySEBall-g_nSkyEarthBallRadius,WHITE,BFINALRESULT|NEEDMODIFY);
Line(OxSEBall,OySEBall-g_nSkyEarthBallRadius,OxSEBall-15/tan(60*3.14159/180),OySEBall-g_nSkyEarthBallRadius-15,WHITE,!BFINALRESULT);
Line(OxSEBall-15/tan(60*3.14159/180),OySEBall-g_nSkyEarthBallRadius-15,OxSEBall+15/tan(60*3.14159/180),OySEBall-g_nSkyEarthBallRadius-15,WHITE,!BFINALRESULT);
Line(OxSEBall+15/tan(60*3.14159/180),OySEBall-g_nSkyEarthBallRadius-15,OxSEBall,OySEBall-g_nSkyEarthBallRadius,WHITE,!BFINALRESULT);
Rotate(3.14159*40/180,OxSEBall,OySEBall);
Line(OxSEBall,OySEBall-g_nSkyEarthBallRadius,OxSEBall-15/tan(60*3.14159/180),OySEBall-g_nSkyEarthBallRadius-15,WHITE,!BFINALRESULT);
Line(OxSEBall-15/tan(60*3.14159/180),OySEBall-g_nSkyEarthBallRadius-15,OxSEBall+15/tan(60*3.14159/180),OySEBall-g_nSkyEarthBallRadius-15,WHITE,!BFINALRESULT);
Line(OxSEBall+15/tan(60*3.14159/180),OySEBall-g_nSkyEarthBallRadius-15,OxSEBall,OySEBall-g_nSkyEarthBallRadius,WHITE,!BFINALRESULT);
Rotate(-3.14159*40/180,OxSEBall,OySEBall);
//////////////////////////////////////////////////////DiamandScale
if(g_nParameters[3]==32||g_nParameters[3]==33)
{
HollowRect(OxSEBall-2,OySEBall+g_nSkyEarthBallRadius+20,OxSEBall+2,OySEBall+g_nSkyEarthBallRadius+40,WHITE,BFINALRESULT);
PutChar('#',OxSEBall-g_nSkyEarthBallRadius*2/3-11,OySEBall+g_nSkyEarthBallRadius+18,WHITE,BFINALRESULT);
PutChar('#',OxSEBall-g_nSkyEarthBallRadius/3-11,OySEBall+g_nSkyEarthBallRadius+18,WHITE,BFINALRESULT);
PutChar('#',OxSEBall+g_nSkyEarthBallRadius/3-11,OySEBall+g_nSkyEarthBallRadius+18,WHITE,BFINALRESULT);
PutChar('#',OxSEBall+g_nSkyEarthBallRadius*2/3-11,OySEBall+g_nSkyEarthBallRadius+18,WHITE,BFINALRESULT);
Line(OxSEBall+g_nParameters[23],OySEBall+g_nSkyEarthBallRadius+17,OxSEBall+8+g_nParameters[23],OySEBall+g_nSkyEarthBallRadius+30,RED,BFINALRESULT);
Line(OxSEBall+8+g_nParameters[23],OySEBall+g_nSkyEarthBallRadius+30,OxSEBall+g_nParameters[23],OySEBall+g_nSkyEarthBallRadius+43,RED,BFINALRESULT);
Line(OxSEBall+g_nParameters[23],OySEBall+g_nSkyEarthBallRadius+43,OxSEBall-8+g_nParameters[23],OySEBall+g_nSkyEarthBallRadius+30,RED,BFINALRESULT);
Line(OxSEBall-8+g_nParameters[23],OySEBall+g_nSkyEarthBallRadius+30,OxSEBall+g_nParameters[23],OySEBall+g_nSkyEarthBallRadius+17,RED,BFINALRESULT);
HollowRect(OxSEBall+g_nSkyEarthBallRadius-2,OySEBall-2,OxSEBall+g_nSkyEarthBallRadius+18,OySEBall+2,WHITE,BFINALRESULT);
PutChar('#',OxSEBall+g_nSkyEarthBallRadius,OySEBall-g_nSkyEarthBallRadius*2/3-12,WHITE,BFINALRESULT);
PutChar('#',OxSEBall+g_nSkyEarthBallRadius,OySEBall-g_nSkyEarthBallRadius/3-12,WHITE,BFINALRESULT);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -