3

[-1, 1]とinのタプル(x, y)があります。タプルは、任意の方向への動きを表します。これを 360 度の角度に変換したいと思います。0 は北を表します。xy

4

4 に答える 4

15

「北」が何を意味するか、つまり、どの軸に沿って、角度がどの方向に向かうかによって、次のコードが問題の解決策になるはずです。

 math.atan2(y,x)/math.pi*180

これにより、x軸に沿って「北」で反時計回りに、原点からのポイント(x、y)の角度が得られます。

于 2012-08-20T13:38:34.620 に答える
7

解決策はありませんが、正しい方向に向けてください。ほとんどのプログラミング言語には と呼ばれる関数がありatan2、入力として x と y の値を取り、点と正の x 軸の間の角度をラジアン単位で計算します。象限の問題を自動的に処理します。

http://en.wikipedia.org/wiki/Atan2

于 2012-08-20T13:36:20.887 に答える
3

数学は以下の通りです。

日焼け = 反対/隣接。(あなたの場合はそれぞれyとx)。

arctan(r) = 角度、与えられた反対側と隣接側の比率 r。

arctan2 は arctan に似ていますが、象限の問題を処理します。

これが直角三角形のすべてであることを付け加えておきます。

wikipedia から取得した Atan2 の厳密な定義:

ここに画像の説明を入力

詳細については、http: //en.wikipedia.org/wiki/Arctan2をご覧ください 。

于 2012-08-20T13:45:04.960 に答える
0

これは、セグメントを形成する任意の 2 点に対して一般的に行うこともできます。

segment = ((x1, y1), (x2, y2))

from math import *

angle = degrees(atan((x2 - x1) / (y2 - y1)))

象限の問題を確認することを忘れないでください

于 2012-08-20T13:36:49.473 に答える