Discuz! Board
标题:
[代码|Code]欧拉角≒四元数|EulerAngles≒Quaternions
[打印本页]
作者:
Jerry小坏
时间:
2017-7-14 16:36
标题:
[代码|Code]欧拉角≒四元数|EulerAngles≒Quaternions
by Akatsuki
// 欧拉角转四元数[] EulerAngles To Quaternions
void AngleQuat(const float in[3], float out[4])
{
out[3] = cos(in[0]/2.0)*cos(in[1]/2.0)*cos(in[2]/2.0) + sin(in[0]/2.0)*sin(in[1]/2.0)*sin(in[2]/2.0);
out[0] = sin(in[0]/2.0)*cos(in[1]/2.0)*cos(in[2]/2.0) - cos(in[0]/2.0)*sin(in[1]/2.0)*sin(in[2]/2.0);
out[1] = cos(in[0]/2.0)*sin(in[1]/2.0)*cos(in[2]/2.0) + sin(in[0]/2.0)*cos(in[1]/2.0)*sin(in[2]/2.0);
out[2] = cos(in[0]/2.0)*cos(in[1]/2.0)*sin(in[2]/2.0) - sin(in[0]/2.0)*sin(in[1]/2.0)*cos(in[2]/2.0);
}
// 四元数转欧拉角[] Quaternions To EulerAngles
void QuatAngle(const float in[4], float out[3])
{
out[0] = atan2(2*(in[3]*in[0]+in[1]*in[2]), 1-2*(in[0]*in[0]+in[1]*in[1]));
out[1] = atan(2*(in[3]*in[1]-in[2]*in[0]));
out[2] = atan2(2*(in[3]*in[2]+in[0]*in[1]), 1-2*(in[1]*in[1]+in[2]*in[2]));
}
复制代码
欢迎光临 Discuz! Board (https://esfbbs.foxnyx.top/)
Powered by Discuz! X3.2