转换偏航欧拉角在范围[-90,90]至[0,360](Converting yaw Euler an

2019-09-18 09:34发布

是否有可能偏航欧拉角使用来自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-> -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 ....唷!

Answer 1:

不,阅读了关于不同角度的域或欧拉一般角度。 两个有其域[0,2 PI]通常偏航和横滚和一个[0,PI]通常间距。



文章来源: Converting yaw Euler angles in range [-90, 90] to [0, 360]