/*
输入参数:
Longitude - 经度(单位"度")
Latitude  - 纬度(单位"度")
Year      - 年
Month     - 月
Day       - 日
Hour      - 时
Minute    - 分
Second    - 秒输出参数:
Height    - 太阳高度角   (单位"弧度")
Direction - 太阳方位角   (单位"弧度")
*/
void SunPositionNR(double Longitude, double Latitude, int year, int month, int day, int hour, int minute, int second, double& height, double& direction)
{double A = year/4;   double B = A-floor(A);   double C = 32.8;   if(month <= 2)   C = 30.6;   if(B==0 && month>2)   C = 31.8;   double G = floor(30.6*month-C+0.5)+day;   double L = Longitude/15.0;                    //经度修正    double H = hour-8 + minute/60.0;              //时刻修正    double N = G+(H-L)/24.0;                      //计算积日 double theta, NO;     //theta为日角NO = 79.6764 + 0.2422*(year-1985) - floor((year-1985)/4.0);theta = 2*PI*(N-NO)/365.2422;double lat;//赤纬角lat = 0.3723+23.2567*sin(theta)+0.1149*sin(2*theta)-0.1712*sin(3*theta)-0.758*cos(theta)+0.3656*cos(2*theta)+0.0201*cos(3*theta);lat = lat*3.14159265358979/180.0;double Et;//时差(以分钟为单位)Et = 0.0028-1.9857*sin(theta)+9.9059*sin(2*theta)-7.0924*cos(theta)-0.6882*cos(2*theta);double timeAngle;//时角timeAngle = ( (hour-12) + (minute - (120.0-Longitude) * 4.0 + Et)/60.0 ) * 15.0;timeAngle = timeAngle * 3.14159265358979 / 180.0;// 将纬度由角度转换为弧度Latitude = Latitude * 3.14159265358979 / 180.0;// 太阳高度角height = sin(Latitude)*sin(lat)+cos(Latitude)*cos(lat)*cos(timeAngle);height = asin(height);// 太阳方位角direction = (sin(height)*sin(Latitude)-sin(lat))/(cos(height)*cos(Latitude));direction = acos(direction);if (timeAngle<0)  //(以正南方向为0度,顺时针为正)direction *= -1.0;
}

以武汉某一天为例:

将日出时间代入得到:height = -0.015, 算是非常准确的了。

转载于:https://www.cnblogs.com/P3nguin/p/8288511.html

[c++] 计算太阳高度角相关推荐

  1. C# 计算太阳倾角、太阳高度角

    /// 计算太阳高度角ho/// </summary>/// <param name="φ">当地纬度,度(如34.64)</param>/// ...

  2. html动态日出,日出日落及方位角计算html

    太阳高度角的计算-太阳高度角在线计算器-太阳方位角计算软件 // sunangle.js var showedLongitudeMeridianWarning = false; //console.l ...

  3. 日出日落时间和年均光照时长计算 java

    至入行多年仍是新手的我 文章目录 前言 一.天文知识 1.太阳高度角 2.太阳方位角 3.赤纬角 4.时角 二.计算方法 1.核心计算公式 2.日出日落时间 3.年均光照时长 1.建筑物实体类 3.工 ...

  4. 太阳直射点纬度计算公式_高中地理——每日讲1题(气压带与风带、地方时、太阳高度角)...

    知识点 1.气压带与风带 假设地球是一个光滑的球体,在热力和动力的作用下,地球上存在着"七压六带".春分和秋分时,南北半球的气压带和风带恰好对称,其中气压带它的纬度位置为: ①赤道 ...

  5. 2023美国大学生数学建模竞赛(美赛)思路代码

    2023美国大学生数学建模竞赛(美赛)思路&代码 报名 时间节点 比赛说明 问题A(数据分析题):收干旱影响的植物群落(MCM) 第一问 第二问 问题B(仿真建模题):重塑马赛马拉(MCM) ...

  6. ArcGIS城市建筑日照分析

    ArcGIS进行建筑日照分析 所处位置:116.286286E,40.2131021N 1.确定研究边界,输入高程数据 2.矢量转栅格 3.计算方位角 计算太阳高度角和坡度角,分别根据给定的公式,计算 ...

  7. 光伏发电系统模拟及其发电预测开源python工具pvlib

    1. 太阳辐照量模拟 pysolar是一个用于计算太阳位置和辐照量的Python库.它是基于python语言编写的,可以方便地在各种python项目中使用.pysolar主要用于计算太阳的位置.太阳高 ...

  8. 定量遥感:计算地方时和太阳高度角(C++代码)

    在定量遥感中,通常需要计算地方时和太阳高度角,本文采用C++语言实现. #include <cmath> #include <iostream> #include <fs ...

  9. 太阳高度角计算题_太阳高度角的计算问题

    太阳高度角的计算问题 (2009-10-07 20:30:33) 标签: 杂谈 太阳高度角的计算问题是高一地理第一单元重点内容之一 重要程度仅次于日期时间计算问题 应 gst 的要求,我来讲解一下这个 ...

最新文章

  1. JavaScript基础初始时期分支(018)
  2. python语言解释器的全部代码都是开源的_Python IDE和解释器的区别是什么?
  3. 三年python面试题_300道Python面试题
  4. git管理和自动部署项目
  5. python如何去掉方括号_python从入门到实战外星人入侵
  6. android - FlutterActivity MethodChannel和FlutterView
  7. Pandas高级教程之:统计方法
  8. RedHat el5.0 搭建 Postfix 邮件服务器系统一
  9. fatal error LNK1120: 11 unresolved externals
  10. 俄罗斯议会预计2021年代币发行将激增
  11. inter Fortran安装匹配VS2012
  12. 网状meta分析怎么入门?网状meta分析与meta分析区别
  13. opencv图像处理学习(五十七)——峰值信噪比和结构相似性
  14. 自然语言处理(NLP)常用算法入门笔记
  15. 什么是等级保护, 等保2.0详解
  16. 笔记本电脑热点手机无法连接解决方案
  17. 小米智能插座接入HomeKit
  18. 微服务拆分之道,几条策略和坚持的原则
  19. 翻译翻译什么叫HTML5(四)jQuery——给我的网页换个小皮肤
  20. 重启explore(桌面进程)

热门文章

  1. 怎么修改服务器上的分数,在服务器上设置 WinSAT 分数
  2. 数学建模MathType输入平方的三种模式
  3. 模式识别与机器学习(PATTERNnbsp;RECO…
  4. Burg法求解AR(p)模型参数及MATLAB实现
  5. wifidog 源码初分析
  6. c语言判断一个数独是否合法,判断数独是否合法
  7. 【代码随想录】【LeetCode】自学笔记07 - 栈和队列
  8. java复制屏幕文本内容_网页上的文字内容不给复制?电脑老司机教你输入一串代码,轻松复制...
  9. [Algorithmic Toolbox学习笔记][week6]Placing Parentheses
  10. 《小石潭记》古文鉴赏