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

これは演算子ではなく、単に2つの引数をに分離するだけatan2です。Javaでもまったく同じです。

(回転のあいまいさを解決するために、とコンポーネントを別々にatan2取ることに注意してください。)xy

于 2013-01-14T14:12:06.057 に答える
4

Math.atan2メソッドは2つの引数を受け入れます。カンマは単にそれを分離します。

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 に答える