0

我正在尝试将以下 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) )
4

3 回答 3

11

它不是一个运算符,它只是将两个参数分开atan2。在 Java 中是完全一样的。

(回想一下,atan2xy组件分开,以解决旋转歧义。)

于 2013-01-14T14:12:06.057 回答
4

Math.atan2方法接受两个参数。逗号只是将它分开。

Math.atan2(y, x)

返回其参数的商的反正切。

参考:

于 2013-01-14T14:13:00.313 回答
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));
于 2013-01-14T14:14:48.590 回答