javascript - 如何使用javascript计算太阳下点的纬度(即太阳赤纬)?

标签 javascript astronomy

我正在尝试使用 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。这是几百英里之外!

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

最佳答案

看起来您使用的公式需要以度为单位的值,但 Math.sin 使用弧度。如果你转换它,它会给出大致预期的结果:

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

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
}
    
console.log(getSolarDeclination())

关于javascript - 如何使用javascript计算太阳下点的纬度(即太阳赤纬)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62184648/

相关文章:

python - 根据纬度和日出时间计算经度?

Python 2D 数组——如何插入 x 并检索 y 值?

ios - iOS 设备上的天文高度

python - 坐标还原python

javascript - Ember.js: "this.$()"不适用于组件

javascript - 将对象字面量传递给函数内具有变量名的对象

javascript - 类之间的转换不起作用(CSS 和 jQuery)

javascript - 计划执行中的node.js字符串常量

javascript - 刷新 DojoGrid

python - 插值后Healpy坐标错误: appearance of bisector