diff options
author | Gael Guennebaud <g.gael@free.fr> | 2012-03-26 18:30:04 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2012-03-26 18:30:04 +0200 |
commit | fd2f399c1839fedc63ea8abe47feae6e42b6ad96 (patch) | |
tree | 5599f2b511d6079e97a89f7ca0e0d3ef38f90a98 /test/geo_quaternion.cpp | |
parent | 6c3b8b2ebc9545466efb76f74146f860651f818f (diff) |
fix bug #439: add Quaternion::FromTwoVectors() static constructor
Diffstat (limited to 'test/geo_quaternion.cpp')
-rw-r--r-- | test/geo_quaternion.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/test/geo_quaternion.cpp b/test/geo_quaternion.cpp index 7adbe0b3d..b73ae9cd4 100644 --- a/test/geo_quaternion.cpp +++ b/test/geo_quaternion.cpp @@ -142,6 +142,17 @@ template<typename Scalar, int Options> void quaternion(void) VERIFY_IS_APPROX(-v3.normalized(),(q2.setFromTwoVectors(v1,-v3)*v1).normalized()); } + // from two vector creation static function + VERIFY_IS_APPROX( v2.normalized(),(Quaternionx::FromTwoVectors(v1, v2)*v1).normalized()); + VERIFY_IS_APPROX( v1.normalized(),(Quaternionx::FromTwoVectors(v1, v1)*v1).normalized()); + VERIFY_IS_APPROX(-v1.normalized(),(Quaternionx::FromTwoVectors(v1,-v1)*v1).normalized()); + if (internal::is_same<Scalar,double>::value) + { + v3 = (v1.array()+eps).matrix(); + VERIFY_IS_APPROX( v3.normalized(),(Quaternionx::FromTwoVectors(v1, v3)*v1).normalized()); + VERIFY_IS_APPROX(-v3.normalized(),(Quaternionx::FromTwoVectors(v1,-v3)*v1).normalized()); + } + // inverse and conjugate VERIFY_IS_APPROX(q1 * (q1.inverse() * v1), v1); VERIFY_IS_APPROX(q1 * (q1.conjugate() * v1), v1); |