3

2 点間の角度の取得に関するこの投稿を読んでいて、疑問に思っていました。atan2 は atan2(y,x) に対して定義されていると思いましたが、ここでは atan2(deltaX, deltaY) ですが、なぜ x が最初なのですか?

public float getAngle(Point target) {
    float angle = (float) Math.toDegrees(Math.atan2(target.x - x, target.y - y));

    if (angle < 0) {
        angle += 360;
    }

    return angle;
}
4

3 に答える 3

13

Math.java それは次のように定義します

 public static double atan2(double y, double x) {
    return StrictMath.atan2(y, x); // default impl. delegates to StrictMath
  }

これは、X 軸に対して反時計回りの角度を返します。

これらの 2 つを交換すると、X 軸に対して時計回りの角度が得られます。

デカルト座標系では、X 軸に対して反時計回りの角度を考慮します。そのため、Math.java はこれを上記のように使用します。

于 2013-06-25T11:45:07.920 に答える
2

引数の順序を入れ替えると、X 軸との (反時計回りの) 角度の代わりに、Y 軸との (時計回りの) 角度が得られます。それは間違っていません、ただ異常です。

于 2013-06-25T11:37:49.627 に答える