Browse Source

Math: allow creating DualComplex/DualQuaternion from real part only.

Useful when creating transformation from rotation only.
pull/278/head
Vladimír Vondruš 13 years ago
parent
commit
f4f44d9d90
  1. 2
      src/Math/DualComplex.h
  2. 2
      src/Math/DualQuaternion.h
  3. 3
      src/Math/Test/DualComplexTest.cpp
  4. 3
      src/Math/Test/DualQuaternionTest.cpp

2
src/Math/DualComplex.h

@ -110,7 +110,7 @@ template<class T> class DualComplex: public Dual<Complex<T>> {
* \hat c = c_0 + \epsilon c_\epsilon
* @f]
*/
inline constexpr /*implicit*/ DualComplex(const Complex<T>& real, const Complex<T>& dual): Dual<Complex<T>>(real, dual) {}
inline constexpr /*implicit*/ DualComplex(const Complex<T>& real, const Complex<T>& dual = Complex<T>(T(0), T(0))): Dual<Complex<T>>(real, dual) {}
/**
* @brief Construct dual complex number from vector

2
src/Math/DualQuaternion.h

@ -115,7 +115,7 @@ template<class T> class DualQuaternion: public Dual<Quaternion<T>> {
* \hat q = q_0 + \epsilon q_\epsilon
* @f]
*/
inline constexpr /*implicit*/ DualQuaternion(const Quaternion<T>& real, const Quaternion<T>& dual): Dual<Quaternion<T>>(real, dual) {}
inline constexpr /*implicit*/ DualQuaternion(const Quaternion<T>& real, const Quaternion<T>& dual = Quaternion<T>({}, T(0))): Dual<Quaternion<T>>(real, dual) {}
/**
* @brief Construct dual quaternion from vector

3
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() {

3
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() {

Loading…
Cancel
Save