6 ret = std::sqrt(a.
w * a.
w + a.
x * a.
x + a.
y * a.
y + a.
z * a.
z);
13 ret.
w = a.
w * b.
w - a.
x * b.
x - a.
y * b.
y - a.
z * b.
z;
14 ret.
x = a.
w * b.
x + a.
x * b.
w + a.
y * b.
z - a.
z * b.
y;
15 ret.
y = a.
w * b.
y - a.
x * b.
z + a.
y * b.
w + a.
z * b.
x;
16 ret.
z = a.
w * b.
z + a.
x * b.
y - a.
y * b.
x + a.
z * b.
w;
55 quatX.
w = std::cos(x / 2);
56 quatX.
x = std::sin(x / 2);
61 quatY.
w = std::cos(y / 2);
63 quatY.
y = std::sin(y / 2);
67 quatX.
w = std::cos(z / 2);
70 quatX.
z = std::sin(z / 2);
86 Eigen::Quaterniond q(mat);
102 Eigen::Matrix3d ret = q.toRotationMatrix();
108 double sinr_cosp = 2 * (a.
w * a.
x + a.
y * a.
z);
109 double cosr_cosp = 1 - 2 * (a.
x * a.
x + a.
y * a.
y);
110 double roll = std::atan2(sinr_cosp, cosr_cosp);
112 double sinp = 2 * (a.
w * a.
y - a.
z * a.
x);
113 double pitch = std::asin(sinp);
115 double siny_cosp = 2 * (a.
w * a.
z + a.
x * a.
y);
116 double cosy_cosp = 1 - 2 * (a.
y * a.
y + a.
z * a.
z);
117 double yaw = std::atan2(siny_cosp, cosy_cosp);
119 Eigen::Vector3d ret(roll, pitch, yaw);
Eigen::Matrix3d rotationMatrixFromQuaternion(quaternion a)
quaternion quatMult(quaternion a, quaternion b)
quaternion quatInversion(quaternion a)
Eigen::Vector3d eulerAnglesFromQuat(quaternion a)
quaternion quatNormalize(quaternion a)
double quatNorm(quaternion a)
quaternion quatFromEulerAngles(Eigen::Vector3d a)
quaternion getRelativeQuat(quaternion a, quaternion b)
quaternion quatFromRotationMatrix(Eigen::Matrix3d mat)