所以我有以下角度(rad): 3.45575213 现在我通过 cos & sin 将其转换为向量(tDir 之前为零):
tDir.x += cos(target->direction);
tDir.y += sin(target->direction);
现在我通过以下方式将其转换回来:
float newDir = Wrap2PI(atan2(tDir.y, tDir.x));
包装看起来像这样:
inline float Wrap2PI(float u)
{
while(u < 0)
u += PI2;
while (u >= PI2)
u -= PI2;
return u;
}
PI:
const float PI = 3.14159265359f;
const float PI2 = PI*2.0f;
结果明显不同:3.45575237
当这个计算每秒执行 120 次时,这种差异真的很大,或者至少看起来像这样,因为我的对象是顺时针旋转的,这是我设法在我的代码中找到的唯一不准确之处。有没有办法获得更好的结果?
编辑:发现问题!这不是不准确,向量有时是 0,0 !我的错!