首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算太阳的赤经和赤经

计算太阳的赤经和赤经
EN

Stack Overflow用户
提问于 2012-11-27 10:02:24
回答 1查看 2.1K关注 0票数 3

我一直遵循这个指南,将其移植到javascript:http://www.saao.ac.za/public-info/sun-moon-stars/sun-index/how-to-calculate-altaz/

一切都很顺利,直到9点(正升点)和10点(赤点)。我不能重现他们给出的答案。

(9)找到太阳的赤经阿尔法:(a)开普敦:

代码语言:javascript
复制
lambda = 326.186
epsilon = 23.4396
alpha = arctan (tan(lambda) x cos(epsilon)) // in same quadrant as lambda

// THEIR RESULT
alpha = 328.428

// MY RESULT
var DEGREES = function (val) {
    return val / (Math.PI / 180);
};
var alpha = Math.atan(Math.tan(lambda) * Math.sin(epsilon));
alpha = 0.495;
alpha = DEGREES(0.495) = 28.39;

我也试过了:

代码语言:javascript
复制
var alpha = Math.atan2(Math.tan(lambda) * Math.sin(epsilon), lambda);
alpha = DEGREES(result) = 1.321;

一点也不接近!

和10(a),赤纬

代码语言:javascript
复制
delta = arcsin (sin(lambda) x sin(epsilon))

// THEIR RESULT
(a) delta = -12.789

// MY RESULT
var result =  Math.asin(Math.sin(eclipticLong) * Math.sin(obliq));
result =  DEGREES(result);
result = -10.966;

正如你所看到的,我正在抓紧救命稻草,因为我真的对此一无所知。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-27 10:59:41

好吧,我看到的最大的问题是:

代码语言:javascript
复制
alpha = arctan (tan(lambda) x cos(epsilon)) // in same quadrant as lambda
...
var alpha = Math.atan(Math.tan(lambda) * Math.sin(epsilon));

在第二个表达式中,您从使用余弦改为使用正弦。

现在,从表面上看,这并不会导致相同的结果,所以让我们深入挖掘一下。为了清楚起见,我将使用以下函数和常量:

代码语言:javascript
复制
var lambda = 326.186;
var epsilon = 23.4396;
function rad (v) { return v * Math.PI / 180 }
function deg (v) { return v * 180 / Math.PI }

Javascript数学函数采用径向坐标,因此让我们尝试一下:

代码语言:javascript
复制
var result = deg(Math.atan(Math.tan(rad(lambda)) * Math.cos(rad(epsilon)))); 
console.log(result); // -.31.5717

多亏了学位的魔力,这就是360 + -31.5717 = 328.428的答案。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13576330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档