diff --git a/libraries/AP_Math/quaternion.cpp b/libraries/AP_Math/quaternion.cpp index 2c3e71d678..cae8b4a781 100644 --- a/libraries/AP_Math/quaternion.cpp +++ b/libraries/AP_Math/quaternion.cpp @@ -366,3 +366,9 @@ Quaternion Quaternion::operator/(const Quaternion &v) const ret.q4 = (rquat0*quat3 - rquat1*quat2 + rquat2*quat1 - rquat3*quat0); return ret; } + +// angular difference in radians between quaternions +Quaternion Quaternion::angular_difference(const Quaternion &v) const +{ + return v.inverse() * *this; +} diff --git a/libraries/AP_Math/quaternion.h b/libraries/AP_Math/quaternion.h index 43eb3c4f6c..2393b67ea3 100644 --- a/libraries/AP_Math/quaternion.h +++ b/libraries/AP_Math/quaternion.h @@ -141,4 +141,7 @@ public: Quaternion operator*(const Quaternion &v) const; Quaternion &operator*=(const Quaternion &v); Quaternion operator/(const Quaternion &v) const; + + // angular difference between quaternions + Quaternion angular_difference(const Quaternion &v) const; };