是否可以使用
转换从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 !.
答案 0 :(得分:0)
不,请阅读不同角度的域,或一般的欧拉角。两个人的域[0,2 pi]通常是偏航和滚动,一个[0,pi]通常是俯仰。