Atan(x/y)的なやつがよく検索に引っかかるが、プログラムでは条件分岐ができるのだからこうしてやればよい。
float Vec2Radian(Vector2 vector)
{
if (vector.y == 0) //x軸上
{
if (vector.x > 0)
{
return Acos(vector.x)
}
else
{
return Acos(vector.x)
}
}
if (vector.y >= 0) //第1,2象限
{
return Acos(vector.x)
}
else //第3,4象限
{
return -Acos(vector.x)
}
}
このコードはUnityC#を見やすくしたやつだがまぁ雰囲気は誰にでも伝わるだろう。
例のAtanを使う方法はたまに∞がでてバグるし、こっちのが数学苦手でも直観的に理解できるしこっち使えばいいと思う。
あ、あとベクトルの正規化をお忘れなきよう。