[c++] 计算太阳高度角
/*
输入参数:
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++] 计算太阳高度角相关推荐
- C# 计算太阳倾角、太阳高度角
/// 计算太阳高度角ho/// </summary>/// <param name="φ">当地纬度,度(如34.64)</param>/// ...
- html动态日出,日出日落及方位角计算html
太阳高度角的计算-太阳高度角在线计算器-太阳方位角计算软件 // sunangle.js var showedLongitudeMeridianWarning = false; //console.l ...
- 日出日落时间和年均光照时长计算 java
至入行多年仍是新手的我 文章目录 前言 一.天文知识 1.太阳高度角 2.太阳方位角 3.赤纬角 4.时角 二.计算方法 1.核心计算公式 2.日出日落时间 3.年均光照时长 1.建筑物实体类 3.工 ...
- 太阳直射点纬度计算公式_高中地理——每日讲1题(气压带与风带、地方时、太阳高度角)...
知识点 1.气压带与风带 假设地球是一个光滑的球体,在热力和动力的作用下,地球上存在着"七压六带".春分和秋分时,南北半球的气压带和风带恰好对称,其中气压带它的纬度位置为: ①赤道 ...
- 2023美国大学生数学建模竞赛(美赛)思路代码
2023美国大学生数学建模竞赛(美赛)思路&代码 报名 时间节点 比赛说明 问题A(数据分析题):收干旱影响的植物群落(MCM) 第一问 第二问 问题B(仿真建模题):重塑马赛马拉(MCM) ...
- ArcGIS城市建筑日照分析
ArcGIS进行建筑日照分析 所处位置:116.286286E,40.2131021N 1.确定研究边界,输入高程数据 2.矢量转栅格 3.计算方位角 计算太阳高度角和坡度角,分别根据给定的公式,计算 ...
- 光伏发电系统模拟及其发电预测开源python工具pvlib
1. 太阳辐照量模拟 pysolar是一个用于计算太阳位置和辐照量的Python库.它是基于python语言编写的,可以方便地在各种python项目中使用.pysolar主要用于计算太阳的位置.太阳高 ...
- 定量遥感:计算地方时和太阳高度角(C++代码)
在定量遥感中,通常需要计算地方时和太阳高度角,本文采用C++语言实现. #include <cmath> #include <iostream> #include <fs ...
- 太阳高度角计算题_太阳高度角的计算问题
太阳高度角的计算问题 (2009-10-07 20:30:33) 标签: 杂谈 太阳高度角的计算问题是高一地理第一单元重点内容之一 重要程度仅次于日期时间计算问题 应 gst 的要求,我来讲解一下这个 ...
最新文章
- JavaScript基础初始时期分支(018)
- python语言解释器的全部代码都是开源的_Python IDE和解释器的区别是什么?
- 三年python面试题_300道Python面试题
- git管理和自动部署项目
- python如何去掉方括号_python从入门到实战外星人入侵
- android - FlutterActivity MethodChannel和FlutterView
- Pandas高级教程之:统计方法
- RedHat el5.0 搭建 Postfix 邮件服务器系统一
- fatal error LNK1120: 11 unresolved externals
- 俄罗斯议会预计2021年代币发行将激增
- inter Fortran安装匹配VS2012
- 网状meta分析怎么入门?网状meta分析与meta分析区别
- opencv图像处理学习(五十七)——峰值信噪比和结构相似性
- 自然语言处理(NLP)常用算法入门笔记
- 什么是等级保护, 等保2.0详解
- 笔记本电脑热点手机无法连接解决方案
- 小米智能插座接入HomeKit
- 微服务拆分之道,几条策略和坚持的原则
- 翻译翻译什么叫HTML5(四)jQuery——给我的网页换个小皮肤
- 重启explore(桌面进程)
热门文章
- 怎么修改服务器上的分数,在服务器上设置 WinSAT 分数
- 数学建模MathType输入平方的三种模式
- 模式识别与机器学习(PATTERNnbsp;RECO…
- Burg法求解AR(p)模型参数及MATLAB实现
- wifidog 源码初分析
- c语言判断一个数独是否合法,判断数独是否合法
- 【代码随想录】【LeetCode】自学笔记07 - 栈和队列
- java复制屏幕文本内容_网页上的文字内容不给复制?电脑老司机教你输入一串代码,轻松复制...
- [Algorithmic Toolbox学习笔记][week6]Placing Parentheses
- 《小石潭记》古文鉴赏