Discuz! Board

标题: [代码|Code]欧拉角≒四元数|EulerAngles≒Quaternions [打印本页]

作者: Jerry小坏    时间: 2017-7-14 16:36
标题: [代码|Code]欧拉角≒四元数|EulerAngles≒Quaternions

by Akatsuki

  1. // 欧拉角转四元数[] EulerAngles To Quaternions
  2. void AngleQuat(const float in[3], float out[4])
  3. {
  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);
  5.     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);
  6.     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);
  7.     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);
  8. }

  9. // 四元数转欧拉角[] Quaternions To EulerAngles
  10. void QuatAngle(const float in[4], float out[3])
  11. {
  12.     out[0] = atan2(2*(in[3]*in[0]+in[1]*in[2]), 1-2*(in[0]*in[0]+in[1]*in[1]));
  13.     out[1] = atan(2*(in[3]*in[1]-in[2]*in[0]));
  14.     out[2] = atan2(2*(in[3]*in[2]+in[0]*in[1]), 1-2*(in[1]*in[1]+in[2]*in[2]));
  15. }
复制代码





欢迎光临 Discuz! Board (https://esfbbs.foxnyx.top/) Powered by Discuz! X3.2