如何使用javascript计算次太阳能点的纬度(即太阳偏角?)>

问题描述 投票:1回答:1

我正在尝试使用javascript计算太阳直接在头顶上方的地球上的点。我的经度功能很好用,但是我在纬度方面遇到了麻烦。

我知道我在寻找什么,叫做太阳偏角,并且近似公式为(source)

δ= 23.45 * sin [(360/365)(284 + N)]

其中N是一年中的一天,1月1日是1,2月1日是32,等等。>

这是我现在正在使用的功能:

    function getSolarDeclination(){
        return -23.44 * Math.sin( (360 / 365.25) * getDayOfYear() )
    }

    function getDayOfYear(){
        var now = new Date();
        var start = new Date(now.getFullYear(), 0, 0);
        var diff = now - start;
        var oneDay = 1000 * 60 * 60 * 24;
        var dayOfYear = Math.floor(diff / oneDay);
        return dayOfYear + 284
    }

但是,这似乎给我的电话号码不正确。对于今天(2020年6月3日),我得到了17.607657911890687,而至少根据this site,应该是〜22.465。这是几百英里的距离!

我在做什么错?这个近似公式是否太“近似”?

我正在尝试使用javascript计算太阳直接在头顶上方的地球上的点。我的经度功能很好用,但是我在纬度方面遇到了麻烦。我了解...

javascript astronomy
1个回答
0
投票

类似于您正在使用的公式,期望值以度为单位,但是Math.sin使用弧度。如果将其转换,它将大致得到预期的结果:

© www.soinside.com 2019 - 2024. All rights reserved.