在[-90,90]范围内将偏航欧拉角转换为[0,360]

时间:2012-06-22 23:50:55

标签: bulletphysics euler-angles

是否可以使用

转换从Bullet物理引擎获得的偏航欧拉角
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-> 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 .... p !.

1 个答案:

答案 0 :(得分:0)

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