资源简介
精确计算太阳的位置,即其方位角和天顶角。有详细的文档说明。

代码片段和文件信息
// 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 高精度太阳位置算法及在太阳能发电中的应用.pdf
----------- --------- ---------- ----- ----
207937 3
- 上一篇:串口以太网二合一调试助手
- 下一篇:用于通达信的维斯波指标
相关资源
- 04741计算机网络原理知识点整理.docx(
- 2018全国大学生计算机博弈大赛 棋谱
- GBT 15532-2008 计算机软件测试规范
- 计算机图形学 边填充算法实现代码
- 电力系统潮流计算程序集合
- 中深层地热单井换热数值计算
- 电脑卡西欧计算器 fx-991CN X Emulator19中
- 松下FP-XH手册位置功能篇
- [免费]A320可靠性计算分析
- 在大图中查找小图显示位置
- 计算机图形学课设 画板
- 硕士计算机英文文献翻译(中英对比
- 卡西欧工程计算器模拟器Casio FX
- 20篇关于计算机的毕业设计外文翻译
- 校园网络规划与设计课程设计
- CAD计算板料展开插件
- 现代谱估计算法 music ESPRIT 谐波分解
- 西安电子科技大学 并行计算 霍红卫
- 计算机专业基础综合知识
- 计算机软件工程研究生专业毕业设计
- 华北科技学院计算机系认识实习报告
- 北京邮电大学 计算机院 复试机试
- PIC 单片机定时器初值计算器
- PC-1D太阳能仿真软件
- 湍流k-e经验值计算器
- 数值计算实验源代码
- c 图形面积计算 利用继承与多态
- SOCKET 网络编程 计算机网络 作业 客户
- 计算方法上机程序——拉格朗日插值
- 数值分析 计算方法 牛顿插值 拉格朗
评论
共有 条评论