将等式转换为java脚本可以解释它的方式

时间:2013-10-22 21:35:09

标签: javascript math latitude-longitude equation

所以我有这个代码用来做这个等式:

(1 / 15) * arccos(-tan(L) * tan(23.44 * sin(360 * (D + 284) / 365))) 

并出于测试目的提醒它!但由于某种原因,它返回“NaN”。我可能做过一些非常愚蠢的事情:P

var now = new Date();
var start = new Date(now.getFullYear(), 0, 0);
var diff = now - start;
var oneDay = 1000 * 60 * 60 * 24;
var d = Math.floor(diff / oneDay);


var lat = position.coords.latitude;
var long = position.coords.longitude;
var tanlat = Math.atan(lat); 
var tantwentythree = Math.tan(23.44);
var dayplus = d + 284;
var sinday = Math.sin(360 * dayplus);
var arccos = Math.acos(tanlat);
var start = 1 / 15;
var equation = start * arccos * tantwentythree * sinday / 365;
alert(equation);


var result = rad2deg / 15 * Math.acos(-Math.tan(lat*deg2rad) * Math.tan(23.44*deg2rad * Math.sin(360*deg2rad * (day + 284) / 365)));
alert(result);
var resultstr = string(result);
document.getElementById('sunrise').innerHTML = resultstr;

我有一个id为“sunrise”,当函数运行时,var resultstr应该添加到(我想?)但是我没有!

1 个答案:

答案 0 :(得分:0)

也许你想要

tanlat= Math.tan(lat)

不是Math.atan(lat)这是反...

但是你有另一个问题:三角函数的所有参数都应该是弧度,而不是度。您必须将度数乘以Math.PI / 180

但是你有更多的问题。 tan(23.44)不是您需要的数量,您需要产品的tan才能开始。

我要做的只是简单地采用你的公式,只添加弧度转换度:

var deg2rad = Math.PI / 180;
var rad2deg = 180 / Math.PI;
var result = rad2deg / 15 * Math.acos(-Math.tan(lat*deg2rad) *
             Math.tan(23.44*deg2rad * Math.sin(360*deg2rad * (d + 284) / 365)))