?? 太陽瞬時高度角,方位角程序.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 + -