資源簡介
精確計算太陽的位置,即其方位角和天頂角。有詳細的文檔說明。

代碼片段和文件信息
//?This?file?is?available?in?electronic?form?at?http://www.psa.es/sdg/sunpos.htm
#include?“sunpos.h“
#include?
void?sunpos(cTime?udtTimecLocation?udtLocation?cSunCoordinates?*udtSunCoordinates)
{
//?Main?variables
double?dElapsedJulianDays;
double?dDecimalHours;
double?dEclipticLongitude;
double?dEclipticObliquity;
double?dRightAscension;
double?dDeclination;
//?Auxiliary?variables
double?dY;
double?dX;
//?Calculate?difference?in?days?between?the?current?Julian?Day?
//?and?JD?2451545.0?which?is?noon?1?January?2000?Universal?Time
{
double?dJulianDate;
long?int?liAux1;
long?int?liAux2;
//?Calculate?time?of?the?day?in?UT?decimal?hours
dDecimalHours?=?udtTime.dHours?+?(udtTime.dMinutes?
+?udtTime.dSeconds?/?60.0?)?/?60.0;
//?Calculate?current?Julian?Day
liAux1?=(udtTime.iMonth-14)/12;
liAux2=(1461*(udtTime.iYear?+?4800?+?liAux1))/4?+?(367*(udtTime.iMonth?
-?2-12*liAux1))/12-?(3*((udtTime.iYear?+?4900?
+?liAux1)/100))/4+udtTime.iDay-32075;
dJulianDate=(double)(liAux2)-0.5+dDecimalHours/24.0;
//?Calculate?difference?between?current?Julian?Day?and?JD?2451545.0?
dElapsedJulianDays?=?dJulianDate-2451545.0;
}
//?Calculate?ecliptic?coordinates?(ecliptic?longitude?and?obliquity?of?the?
//?ecliptic?in?radians?but?without?limiting?the?angle?to?be?less?than?2*Pi?
//?(i.e.?the?result?may?be?greater?than?2*Pi)
{
double?dMeanLongitude;
double?dMeanAnomaly;
double?dOmega;
dOmega=2.1429-0.0010394594*dElapsedJulianDays;
dMeanLongitude?=?4.8950630+?0.017202791698*dElapsedJulianDays;?//?Radians
dMeanAnomaly?=?6.2400600+?0.0172019699*dElapsedJulianDays;
dEclipticLongitude?=?dMeanLongitude?+?0.03341607*sin(?dMeanAnomaly?)?
+?0.00034894*sin(?2*dMeanAnomaly?)-0.0001134
-0.0000203*sin(dOmega);
dEclipticObliquity?=?0.4090928?-?6.2140e-9*dElapsedJulianDays
+0.0000396*cos(dOmega);
}
//?Calculate?celestial?coordinates?(?right?ascension?and?declination?)?in?radians?
//?but?without?limiting?the?angle?to?be?less?than?2*Pi?(i.e.?the?result?may?be?
//?greater?than?2*Pi)
{
double?dSin_EclipticLongitude;
dSin_EclipticLongitude=?sin(?dEclipticLongitude?);
dY?=?cos(?dEclipticObliquity?)?*?dSin_EclipticLongitude;
dX?=?cos(?dEclipticLongitude?);
dRightAscension?=?atan2(?dYdX?);
if(?dRightAscension?0.0?)?dRightAscension?=?dRightAscension?+?twopi;
dDeclination?=?asin(?sin(?dEclipticObliquity?)*dSin_EclipticLongitude?);
}
//?Calculate?local?coordinates?(?azimuth?and?zenith?angle?)?in?degrees
{
double?dGreenwichMeanSiderealTime;
double?dLocalMeanSiderealTime;
double?dLatitudeInRadians;
double?dHourAngle;
double?dCos_Latitude;
double?dSin_Latitude;
double?dCos_HourAngle;
double?dParallax;
dGreenwichMeanSiderealTime?=?6.6974243242?+?
0.0657098283*dElapsedJulianDays?
+?dDecimalHours;
dLocalMeanSiderealTime?=?(dGreenwichMeanSiderealTime*15?
+?udtLocation.dLongitude)*rad;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????701??2012-06-28?09:23??SunPos.h
?????文件???????3926??2012-06-28?09:23??SunPos.cpp
?????文件?????203310??2012-06-28?09:18??高精度太陽位置算法及在太陽能發(fā)電中的應用.pdf
-----------?---------??----------?-----??----
???????????????207937????????????????????3
- 上一篇:串口以太網二合一調試助手
- 下一篇:用于通達信的維斯波指標
評論
共有 條評論