我设置了一个函数来返回Quaternin旋转中使用的值。但是,当我的结果小于1或非常接近360时,我会收到-nan(ind)的结果。有没有一种方法可以返回1和360之间的结论性结果,以避免计算中出现任何错误。谢谢
const float ReturnAngle() const
{
return (acosf(angle) * 180.0f * 2) / PI;
}
更新:
这些是我对四元套进行旋转变换后检查值时收到的一些结果。
angle: 359.598
angle: -nan(ind)
angle: 357.843
angle: -nan(ind)
angle: -nan(ind)
angle: 0.798189
angle: 2.16383
angle: 1.75475
angle: -nan(ind)
答案 0 :(得分:1)
您传递给acosf
的值超出了允许的-1到1范围。请查看为angle
设置值的代码-也许您那里有错误。如果仅是舍入误差,并且angle
超出允许的范围小值,则将其“钳位”到有效范围可能是一个好的解决方案。
const float ReturnAngle() const
{
if (angle < -1f) angle = -1f;
if (angle > +1f) angle = +1f;
return (acosf(angle) * 180.0f * 2) / PI;
}