首页 > 编程语言 >C# 计算太阳倾角、太阳高度角

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

时间:2022-10-06 15:24:36浏览次数:66  
标签:Cos C# double 倾角 太阳 Qo PI Sin Math

        /// 计算太阳高度角ho
        /// </summary>
        /// <param name="φ">当地纬度,度(如34.64)</param>
        /// <param name="t">北京时间,时(如9)</param>
        /// <param name="δ">太阳倾角,度(如-23.1)</param>
        /// <param name="λ">当地经度,度(如34.64)</param>
        /// <returns>返回太阳高度角,度</returns>
        public double ho(double φ, int t, double δ, double λ)
        {
            //公式:ho=arcsin[sinφsinδ+cosφcosδcos(15t+λ-300)]
            double a = 15 * t + λ - 300;//时角
            double b = Math.Cos(φ * Math.PI / 180d) * Math.Cos(δ * Math.PI / 180d) * Math.Cos(a * Math.PI / 180d);
            double c = Math.Sin(φ * Math.PI / 180) * Math.Sin(δ * Math.PI / 180);
            double d = c + b;
            double ho = Math.Asin(d) / (Math.PI / 180d);
            return ho;
        }

        /// <summary>
        /// 计算太阳倾角δ
        /// </summary>
        /// <param name="dn">一年中日期序数(0,1,2......364)</param>
        /// <returns>返回太阳倾角,度</returns>
        public double δ(int dn)
        {
            //公式:δ=[0.006918-0.399912cosQo+0.0702578sinQo-0.006758cosQo+0.000907sin2Qo-0.002697cos3Qo+0.001480sin3Qo]*180/π
            //Qo=360dn/365,度
            double Qo = Convert.ToDouble((Convert.ToDouble(360 * dn) / Convert.ToDouble(365)) * (Math.PI / 180d));
            double a = 0.399912 * Math.Cos(Qo);
            double b = 0.0702578 * Math.Sin(Qo);
            double c = 0.006758 * Math.Cos(Qo);
            double d = 0.000907 * Math.Sin(2 * Qo);
            double e = 0.002697 * Math.Cos(3 * Qo);
            double f = 0.001480 * Math.Sin(3 * Qo);
            double g = 180 / Math.PI;

            double h = 0.006918 - a + b - c + d - e + f;
            double δ = Math.Round(h * g, 1);
            return δ;
        }

https://blog.csdn.net/u012531272/article/details/54410247

标签:Cos,C#,double,倾角,太阳,Qo,PI,Sin,Math
From: https://www.cnblogs.com/TTonly/p/16757679.html

相关文章

  • CF895C Square Subsets
    CF895CSquareSubsets注意到平方数要求每个质因数的幂次均为偶数。由于\(70\)以内仅有\(19\)个质因数,考虑将每个\(a_i\)按照每个质因数的奇偶性分解为\(01\)串......
  • Oracle编程艺术
    第二章-体系结构1.绑定变量,不写死常量:1)绑定变量的话,因为SQL语句是不变的,数据库只解析一次语句(软解析),但是如果绑定的是常量的话,则会多次解析(硬解析),效率就会变慢,差一......
  • CF932F Escape Through Leaf
    CF932FEscapeThroughLeaf设\(f_x\)表示点\(x\)到叶子节点的最优答案。考虑\(x\)下一步跳到点\(y\),可以得到转移方程为\[f_x=\min_{y\inson_x}f_y+a_x\times......
  • ActiveMQ在python中的基本用法
    介绍ApacheActiveMQ是Apache软件基金会所研发的开放源代码消息中间件,很适合用来做分布式消息队列。安装与配置官网:ActiveMQ(apache.org)。目前有两个版本,经典版和arte......
  • docker进阶
    1.DockerFile解析1.是用来构建docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。2.概述 3.官网 https://docs.docker.com/engine/referenc......
  • AT2371 [AGC013E] Placing Squares
    AT2371[AGC013E]PlacingSquares设\(f_i\)表示考虑到第\(i\)个点的贡献之和且不考虑坏点。不难发现转移方程为\(f_n=\sum_{i=0}^nf_i\times(n-i)^2\)则当第\(n......
  • JZOJ 7685. 【2022.10.06冲剌NOIP2022模拟】奇怪的函数(function)
    \(\text{Solution}\)观察到关于\(x\)的函数在\(n\)个操作之后一定是这样的:一段水平直线加上一段斜率为\(1\)的直线再加上一段水平直线于是线段树维护这个分段函数......
  • 1-基本的SELECT语句
    #SELECT语句的练习#1.查询员工12个月的工资总和,并起别名为ANNUALSALARY#理解1:计算12月的基本工资SELECTemployee_id,last_name,salary*12"ANNUALSALARY"FROM......
  • SpringMVC之内容协商策略
    内容协商原理目录内容协商原理一、引言二、正常请求请求数据格式确定和返回值数据格式确定三、内容协商确定客户端接收数据格式默认基于请求头确定请求数据格式确定服务端......
  • JavaScript 面试问题
    参考:https://github.com/lydiahallie/javascript-questions/语法......