【问题标题】:Translating math equation into JS将数学方程式翻译成 JS
【发布时间】:2013-03-27 10:10:46
【问题描述】:

我想看看是不是这个

 Math.sqrt(
           Math.pow((position.coords.latitude -45),2) + 
           Math.pow((position.coords.longitude-75),2)
          )*79; 

匹配这个:

 Distance to store (km) = Square Root (
                                       (Current Latitude – 45)^2 + 
                                       (Current Longitude ‐75)^2
                                      ) *79

现在我得到了 11,XXX KM,这已经很多了,但我没有发现任何错误。

我也试过这样做:

var x = Math.pow((position.coords.latitude-45),2);
    var y = Math.pow((position.coords.longitude-75),2);
    var z = Math.sqrt(x+y);
    var zz = z*79;

但它给了我相同的答案。

【问题讨论】:

  • 正确的值应该是多少?
  • 你使用什么价值观?顺便说一句,比起Math.pow(x,2),更喜欢x*x,它会更快。
  • 我认为你不应该移动这个特定的问题,而只是作为一般的琐事;你知道有一个用于数学的 stackexchange 网站吗? math.stackexchange.com
  • Lattitude and longitude 不是以 KM 为单位,而是以度为单位,它们是角度。因此,您计算距离的方式不起作用。有关计算距离的正确方法,请参阅stackoverflow.com/questions/27928/…
  • 一个可能的问题是这个公式只能对非常短的距离有效。更好的公式可用here

标签: javascript math


【解决方案1】:

此公式适用于到纬度 45 和经度 75 的短距离。

由于您不在哈萨克斯坦,您想要的是到(45,-75)的距离,即

Math.sqrt(Math.pow((lat-45),2)+Math.pow((lon+75),2))*79; 
                                            ^

请注意,它的精确度取决于您的坐标是否精确,并且对于更大的距离,您应该抓住a better formula

【讨论】:

  • 我明天将尝试更好的公式之一,因为 65 公里仍然是一个相当高的价值,但感谢您的回答。
  • 问题可能更多在于您学校坐标的精度。在谷歌地图上找到它。
猜你喜欢
  • 2014-11-25
  • 1970-01-01
  • 2011-07-19
  • 1970-01-01
  • 1970-01-01
  • 2013-07-17
  • 1970-01-01
  • 2018-02-08
  • 1970-01-01
相关资源
最近更新 更多