我正在尝试将以下javascript转换为java
var lat2 = Math.asin( Math.sin(lat1)*Math.cos(d/R) +
Math.cos(lat1)*Math.sin(d/R)*Math.cos(brng) );
var lon2 = lon1 + Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(lat1),
Math.cos(d/R)-Math.sin(lat1)*Math.sin(lat2));
这一切都相当简单,除了我不确定cos(lat1)之后的逗号是什么? 我在javascript中读到它用于将昏迷后的值分配给变量,同时仍然在评估第一个表达式,尽管在上面的代码中,逗号之前的表达式没有存储?
有关将此转换为java或了解逗号的功能的任何帮助吗?
原始数学公式也有逗号
φ2 = asin( sin(φ1)*cos(d/R) + cos(φ1)*sin(d/R)*cos(θ) )
λ2 = λ1 + atan2( sin(θ)*sin(d/R)*cos(φ1), cos(d/R)−sin(φ1)*sin(φ2) )
答案 0 :(得分:11)
它不是运算符,它只是将两个参数分离为atan2
。它是Java中的exactly the same。
(回想一下atan2
分别采用x
和y
个元素,以解决旋转模糊问题。)
答案 1 :(得分:4)
Math.atan2
方法接受两个参数。逗号只是将它分开。
Math.atan2(y,x)
返回其参数商的反正切值。
<强>参考:强>
答案 2 :(得分:1)
唯一需要改变的是给变量一个类型。
double lat2 = Math.asin(Math.sin(lat1) * Math.cos(d / R) +
Math.cos(lat1) * Math.sin(d / R) * Math.cos(brng));
double lon2 = lon1 + Math.atan2(Math.sin(brng) * Math.sin(d / R) * Math.cos(lat1),
Math.cos(d / R) - Math.sin(lat1) * Math.sin(lat2));