diff --git a/src/Math/DualComplex.h b/src/Math/DualComplex.h index 1655ac529..d008b78e0 100644 --- a/src/Math/DualComplex.h +++ b/src/Math/DualComplex.h @@ -110,7 +110,7 @@ template class DualComplex: public Dual> { * \hat c = c_0 + \epsilon c_\epsilon * @f] */ - inline constexpr /*implicit*/ DualComplex(const Complex& real, const Complex& dual): Dual>(real, dual) {} + inline constexpr /*implicit*/ DualComplex(const Complex& real, const Complex& dual = Complex(T(0), T(0))): Dual>(real, dual) {} /** * @brief Construct dual complex number from vector diff --git a/src/Math/DualQuaternion.h b/src/Math/DualQuaternion.h index 6d6e86cf3..c3e8002cc 100644 --- a/src/Math/DualQuaternion.h +++ b/src/Math/DualQuaternion.h @@ -115,7 +115,7 @@ template class DualQuaternion: public Dual> { * \hat q = q_0 + \epsilon q_\epsilon * @f] */ - inline constexpr /*implicit*/ DualQuaternion(const Quaternion& real, const Quaternion& dual): Dual>(real, dual) {} + inline constexpr /*implicit*/ DualQuaternion(const Quaternion& real, const Quaternion& dual = Quaternion({}, T(0))): Dual>(real, dual) {} /** * @brief Construct dual quaternion from vector diff --git a/src/Math/Test/DualComplexTest.cpp b/src/Math/Test/DualComplexTest.cpp index 9e8f0ca20..d0ddce9f5 100644 --- a/src/Math/Test/DualComplexTest.cpp +++ b/src/Math/Test/DualComplexTest.cpp @@ -107,6 +107,9 @@ void DualComplexTest::construct() { constexpr Complex c = a.dual(); CORRADE_COMPARE(b, Complex(-1.0f, 2.5f)); CORRADE_COMPARE(c, Complex(3.0f, -7.5f)); + + constexpr DualComplex d(Complex(-1.0f, 2.5f)); + CORRADE_COMPARE(d, DualComplex({-1.0f, 2.5f}, {0.0f, 0.0f})); } void DualComplexTest::constructDefault() { diff --git a/src/Math/Test/DualQuaternionTest.cpp b/src/Math/Test/DualQuaternionTest.cpp index f25594961..d0dc65039 100644 --- a/src/Math/Test/DualQuaternionTest.cpp +++ b/src/Math/Test/DualQuaternionTest.cpp @@ -105,6 +105,9 @@ void DualQuaternionTest::construct() { constexpr Quaternion c = a.dual(); CORRADE_COMPARE(c, Quaternion({0.5f, -3.1f, 3.3f}, 2.0f)); + + constexpr DualQuaternion d({{1.0f, 2.0f, 3.0f}, -4.0f}); + CORRADE_COMPARE(d, DualQuaternion({{1.0f, 2.0f, 3.0f}, -4.0f}, {{0.0f, 0.0f, 0.0f}, 0.0f})); } void DualQuaternionTest::constructDefault() {