diff --git a/src/Math/Quaternion.h b/src/Math/Quaternion.h index 248d5fc01..7c9da9874 100644 --- a/src/Math/Quaternion.h +++ b/src/Math/Quaternion.h @@ -257,6 +257,27 @@ template class Quaternion { T _scalar; }; +/** @relates Quaternion +@brief Multiply scalar with quaternion + +Same as Quaternion::operator*(T) const. +*/ +template inline Quaternion operator*(T scalar, const Quaternion& quaternion) { + return quaternion*scalar; +} + +/** @relates Quaternion +@brief Divide quaternion with number and invert + +@f[ + \frac a q = [\frac a {\boldsymbol q_V}, \frac a {q_S}] +@f] +@see Quaternion::operator/() +*/ +template inline Quaternion operator/(T scalar, const Quaternion& quaternion) { + return {scalar/quaternion.vector(), scalar/quaternion.scalar()}; +} + /** @debugoperator{Magnum::Math::Geometry::Rectangle} */ template Corrade::Utility::Debug operator<<(Corrade::Utility::Debug debug, const Quaternion& value) { debug << "Quaternion({"; diff --git a/src/Math/RectangularMatrix.h b/src/Math/RectangularMatrix.h index 691174766..592e062c5 100644 --- a/src/Math/RectangularMatrix.h +++ b/src/Math/RectangularMatrix.h @@ -385,7 +385,7 @@ template class RectangularMatrix { /** @relates RectangularMatrix @brief Multiply number with matrix -@see RectangularMatrix::operator*(U) const +Same as RectangularMatrix::operator*(U) const. */ #ifndef DOXYGEN_GENERATING_OUTPUT template inline typename std::enable_if::value, RectangularMatrix>::type operator*(U number, const RectangularMatrix& matrix) { @@ -398,11 +398,9 @@ template inline Rectangula /** @relates RectangularMatrix @brief Divide matrix with number and invert -Example: -@code -RectangularMatrix<2, 3, float> mat(1.0f, 2.0f, -4.0f, 8.0f, -1.0f, 0.5f); -RectangularMatrix<2, 3, float> another = 1.0f/mat; // {1.0f, 0.5f, -0.25f, 0.128f, -1.0f, 2.0f} -@endcode +@f[ + \boldsymbol B_{ji} = \frac a {\boldsymbol A_{ji}} +@f] @see RectangularMatrix::operator/() */ #ifndef DOXYGEN_GENERATING_OUTPUT diff --git a/src/Math/Test/MathQuaternionTest.cpp b/src/Math/Test/MathQuaternionTest.cpp index 15326582f..33c37b490 100644 --- a/src/Math/Test/MathQuaternionTest.cpp +++ b/src/Math/Test/MathQuaternionTest.cpp @@ -76,7 +76,10 @@ void QuaternionTest::multiplyDivideScalar() { Quaternion b({-1.5f, -4.5f, 3.0f}, 6.0f); CORRADE_COMPARE(a*-1.5f, b); + CORRADE_COMPARE(-1.5f*a, b); CORRADE_COMPARE(b/-1.5f, a); + + CORRADE_COMPARE(2.0f/a, Quaternion({2.0f, 0.666666f, -1.0f}, -0.5f)); } void QuaternionTest::multiply() {