Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将等式转换为java脚本可以解释的方式_Javascript_Math_Latitude Longitude_Equation - Fatal编程技术网

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

Javascript 将等式转换为java脚本可以解释的方式,javascript,math,latitude-longitude,equation,Javascript,Math,Latitude Longitude,Equation,所以我有一段代码,用来做这个等式: (1/15)*arccos(-tan(L)*tan(23.44*sin(360*(D+284)/365))) 为了测试的目的,提醒它!但出于某种原因,它返回“NaN”。我可能做了一些非常愚蠢的事情:P var now=newdate(); var start=newdate(now.getFullYear(),0,0); var diff=现在-开始; var一天=1000*60*60*24; var d=数学下限(差异/一天); var lat=位置坐标纬

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

(1/15)*arccos(-tan(L)*tan(23.44*sin(360*(D+284)/365)))
为了测试的目的,提醒它!但出于某种原因,它返回“NaN”。我可能做了一些非常愚蠢的事情:P

var now=newdate();
var start=newdate(now.getFullYear(),0,0);
var diff=现在-开始;
var一天=1000*60*60*24;
var d=数学下限(差异/一天);
var lat=位置坐标纬度;
var long=位置坐标经度;
var tanlat=Math.atan(lat);
var tantwentythree=数学tan(23.44);
var dayplus=d+284;
var sinday=Math.sin(360*dayplus);
var arccos=数学acos(tanlat);
var启动=1/15;
var方程=开始*arccos*tantwentythree*sinday/365;
警报(方程式);
var结果=rad2deg/15*Math.acos(-Math.tan(lat*deg2rad)*Math.tan(23.44*deg2rad*Math.sin(360*deg2rad*(day+284)/365));
警报(结果);
var resultstr=字符串(结果);
document.getElementById('sunrise')。innerHTML=resultstr;
我有一个id为“sunrise”的函数,当函数运行时,var resultstr应该添加到(我想?)中,但我没有

也许你想要

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)))

position.coords.latitude
可能是一个字符串。@SLaks,从它们是双重的判断添加以下“警报”:
alert(start);警报(arccos);警报(第二十三次);警报(sinday)
找出
NaN
因子我在arccos上得到NaN,所以我猜是那个位置;是一个字符串…var latint=parseInt(lat);这样行吗?哦,是的-tan()和反tan不一样:/好的,所以对于每个参数,我都会使用变量*Math.PI/180?是的,如果参数是度@乔治泰勒,你确定你的起始配方吗?如果你是,那么我的解决方案应该是可行的(我只是将
方程
重命名为
结果
,因为方程同时指等式的左侧和右侧)(1/15)*arccos(-tan(L)*tan(23.44*sin(360*(D+284)/365)):绝对是起始公式!我会试试你的代码:)结果=0.11340350177467465计算器中的等式等于4.94。。。发生什么事了?