是否可以转换从子弹物理引擎获得的偏航欧拉角使用
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 ....呸!