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

📄 太阳瞬时高度角,方位角程序.txt

📁 对太阳高度角,方位角,某天的太阳日出,日落时间
💻 TXT
字号:
#define pi 3.141592654//
#define charge 57.3//角度转成弧度的比

float angle_h;//太阳的高度角***上下方向的角度
float angle_h0;//太阳高度角****弧度表示

float angle_c;//所在地方的地理纬度
float angle_c0;//地理纬度***弧度表示

float angle_l;//所在地方的地理经度
float angle_l0;//所在地方的地理经度****弧度表示

float angle_w;//太阳时角
float angle_w0;//太阳时角***弧度

float angle_sc;//太阳的赤纬
float angle_sc0;//太阳赤纬弧度表示

 float angle_sl;//太阳的方位角******南北方向的角度
 float angle_sl0;//太阳的方位角****弧度表示
 
 float angle_s;//太阳的日出日落时角
 float angle_s0;//太阳的日出日落时角***弧度表示
 
float t;//昼长
float tr;//日出时间
float ts;//日落时间
float t0;//当地当时的时间转换成北京时间的时间


float n;//一天中可能的日照时间

float hs;//太阳在黄道中的位置
float Bs;//太阳当前直射的纬度
float Bs0;//太阳当前直射的纬度****弧度表示
float angle_ao;//超出的角度:由于黄道、赤道和你所在的纬圈均不同在一个平面,
             //所以在纬圈上,太阳照射的部分并不等于纬圈的一半。这里令2θ为其超出的角度



 float ssinh;//太阳高度角的正弦值
 float cossl;//太阳方阳角的余弦值
 float h;//时间时的小数表示法
 int d;//至春分日的日差
unsigned char month,date,year;//时间的月/日
unsigned char hour,min,second;//时,分,秒



unsigned char a1[]={"fangwei"};
unsigned char a2[]={"gaodu"};

void main(void)
{
//LcmInit();

angle_c=32.061;
angle_c0=32.061/charge;

angle_l=118.79125;
angle_l0=angle_l/charge;
h=12;
month=8;
date=31;
d=0;


switch (month-1)
{
case 11:d=d+30;
case 10:d=d+31;
case 9:d=d+30;
case 8:d=d+31;
case 7:d=d+31;
case 6:d=d+30;
case 5:d=d+31;
case 4:d=d+30;
case 3:d=d+31;
case 2:d=d+28;
case 1:d=d+31;
default:d=d+date;
}
d=d-81;
if (d<0)
  d=d+365;
hs=d/365.00*2.00*pi;
Bs0=asin(sin(23.5/57.3)*sin(hs));
Bs=Bs0*57.3;//太阳当前直射的纬度的计算公式;

angle_ao=atan(tan(Bs0)*tan(angle_c0));//超出角度的计算公式;
t=12.00+angle_ao*24.00/pi;//?不要57。3
t0=12.00-(angle_l-120.00)*24.00/360.00;
ts=t0+t/2.00;//******************************以上的有关日出日落的OK了



angle_sc=23.45*sin(2*pi*d/365);//d为自春分日起的第d天(春分日为3月21日)
angle_sc0=angle_sc/57.3;

angle_w=(12-h)*15;//h为当时的时间时,用小数,即:时间分化为时间时的小数来算,****h
angle_w0=angle_w/charge;

ssinh=sin(angle_c0)*sin(angle_sc0)+cos(angle_c0)*cos(angle_sc0)*cos(angle_w0);//太阳高度角的计算公式
angle_h0=asin(ssinh);
angle_h=angle_h0*57.3;

cossl=(ssinh*sin(angle_c0)-sin(angle_sc0))/(cos(angle_h0)*cos(angle_c0));//太阳方位角计算公式
angle_sl0=acos(cossl);
angle_sl=angle_sl0*57.3;

angle_s0=acos(-tan(angle_c0)*tan(angle_sc));//日出日没时角
angle_s=angle_s0*57.3;

n=angle_s*2/15;

if (ts<0)
//   DisplayOneChar(5,0,49);
//   else DisplayOneChar(5,0,48);
if (t<0)
//   DisplayOneChar(5,1,49);
 //  else DisplayOneChar(5,1,48);


//DisplayOneChar(0,0,angle_sl/100+48);
//DisplayOneChar(1,0,fmod(angle_sl,100)/10+48);
//DisplayOneChar(2,0,fmod(angle_sl,10)/1+48);
//DisplayOneChar(4,0,fmod(angle_sl,1)/0.1+48);

//DisplayListChar(6,0,a1);

//Delay5Ms();

//DisplayOneChar(0,1,angle_h/100+48);
//DisplayOneChar(1,1,fmod(angle_h,100)/10+48);
//DisplayOneChar(2,1,fmod(angle_h,10)/1+48);
//DisplayOneChar(4,1,fmod(angle_h,1)/0.1+48);
//DisplayListChar(6,1,a2);
t=fabs(t);
ts=fabs(ts);
//DisplayOneChar(12,1,t/100+48);
//DisplayOneChar(13,1,fmod(t,100)/10+48);
//DisplayOneChar(14,1,fmod(t,10)/1+48);
//DisplayOneChar(15,1,fmod(t,1.0)/0.1+48);
//DisplayOneChar(12,0,ts/100+48);
//DisplayOneChar(13,0,fmod(ts,100)/10+48);
//DisplayOneChar(14,0,fmod(ts,10)/1+48);
//DisplayOneChar(15,0,fmod(ts,1.0)/0.1+48);

//DisplayOneChar(8,0,d/100+48);
//DisplayOneChar(9,0,d%100/10+48);
//DisplayOneChar(10,0,d%10+48);

//DisplayOneChar(8,1,t0/10+48);
//DisplayOneChar(9,1,fmod(t0,10)/1+48);
//DisplayOneChar(10,1,fmod(t0,1.0)/0.1+48);


while (1);

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -