sin
/cos
操作を逆にして角度を戻したいのですが、何をすべきかわからないのです。
ラジアン単位の角度でsin
とcos
を使用して、x/yベクトルを次のように取得しました。
double angle = 90.0 * M_PI / 180.0; // 90 deg. to rad.
double s_x = cos( angle );
double s_y = sin( angle );
s_x
およびs_y
、角度を取り戻すことはできますか? atan2
は使用する関数でしたが、期待した結果が得られません。
atan2(s_y, s_x)
は正しい角度を与えるはずです。 s_x
とs_y
の順序を逆にした可能性があります。また、acos
関数とasin
関数をそれぞれs_x
とs_y
で直接使用することもできます。
acos関数を使用して、指定されたs_x余弦から角度を取得します。しかし、いくつかの角度が同じ余弦になる可能性があるため(たとえば、cos(+ 60°)= cos(-60°)= 0.5)、s_xから直接角度を取得することはできません。したがって、角度の符号を取得するためにs_yの符号も使用します。
// Java code
double angleRadian = (s_y > 0) ? Math.acos(s_x) : -Math.acos(s_x);
double angleDegrees = angleRadian * 180 / Math.PI;
(s_y == 0)の特定のケースでは、角度が0°(+ 0°または-0°は同じ角度)または180°(+180 °または-180°は同じ角度です)。
数学では罪と余弦の逆演算です。これはアークシンとアークコスです。あなたが使っているプログラミング言語はわかりません。しかし、通常それがcosおよびsin関数を持っている場合、それは逆の関数を持つことができます。
asin(s_x)、acos(s_y)、おそらく、cを使用している場合。