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



我正在尝试使用javascript计算地球上太阳直接在头顶的点。我的经度函数效果很好,但我在纬度方面遇到了问题。

我知道我正在寻找的被称为太阳赤纬,其近似公式是(来源(:

δ=23.45 * 罪[(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,而至少根据这个网站,它应该是~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())

最新更新