1. ホーム
  2. java

[解決済み] 直線とX軸のなす角の計算

2022-03-03 02:13:05

質問

現在、Android向けに簡単な2Dゲームを開発中です。 画面の中央に位置する静止したオブジェクトがあるのですが、そのオブジェクトを回転させて、ユーザーがタッチした画面上の領域を指すようにしようとしています。 画面の中心を表す一定の座標があり、ユーザーがタップした点の座標を取得することができます。 このフォーラムで紹介されている数式を使用しています。 2点間の角度を求めるには?

  • 次のように書かれています。「この2点で定義される線と横軸との角度を求める場合。

    double angle = atan2(y2 - y1, x2 - x1) * 180 / PI;".
    
    
  • 実装してみましたが、スクリーン座標で作業しているため、Y座標が逆になってしまい、計算ミスを起こしているようです。 これが正しい方法かどうか分かりませんが、他の考えや提案をお願いします。

どのように解決するのですか?

前提条件 x は横軸で、左から右に行くほど大きくなります。 y は縦軸で、下から上に向かって大きくなります。 (touch_x, touch_y) は が選択した点。 (center_x, center_y) は中央の点 画面に表示されます。 theta から反時計回りに測定されます。 +x を軸とする。 では

delta_x = touch_x - center_x
delta_y = touch_y - center_y
theta_radians = atan2(delta_y, delta_x)

編集 : コメントでyは上から下に向かって増えるというお話がありました。その場合 の場合です。

delta_y = center_y - touch_y

しかし、これは以下のように表現するのがより正しいでしょう。 (touch_x, touch_y) を基準とした極座標で (center_x, center_y) . ChrisFさんがおっしゃるように 2点間の角度をとるという考え方は、うまく定義されていない。