2

是否可以转换从子弹物理引擎获得的偏航欧拉角使用

btTransform trans;
trans.getBasis().getEulerYPR(rx, ry, rz);

在 [0 , 360] 范围内。否则,对于 360 度旋转,我得到的欧拉角从 0->90->0-> -90 -> 0 变化

但我想从 0->90->180->270->0

我的图形 API 只接受 0 到 360 范围内的旋转角度


嗯,0->90->0->-90 是音高值。这是我现在使用的代码:

trans.getBasis().getEulerYPR(yaw, pitch, roll);
y1 = (pitch >= 0) ? pitch : (PI2 + pitch);

我试图为音高的负值添加 180,但这不起作用。好吧,看来我需要找到另一种使用欧拉角平滑旋转网格的方法。


更新:看来我不应该直接使用项目符号功能。更好的选择是直接处理基矩阵:

btMatrix3x3 m_el = trans.getBasis();
ry = btAtan2( m_el[0].z(), m_el[0].x() );
if(ry < 0)
    ry += SIMD_PI;

所以这给了我关于 y 轴的旋转。现在关于其他 2 ....呸!

4

1 回答 1

0

不,请阅读不同角度或一般欧拉角的域。两个的域 [0, 2 pi] 通常是偏航和滚动,一个 [0, pi] 通常是俯仰。

于 2012-06-23T00:06:03.473 回答