From dc727d86f1913f54850c01a217b9225800fd02a4 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Wed, 2 Mar 2011 19:34:39 +0100 Subject: extend unit tests of Transform * MatrixBase and Transform * Homogeneous --- test/geo_homogeneous.cpp | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) (limited to 'test/geo_homogeneous.cpp') diff --git a/test/geo_homogeneous.cpp b/test/geo_homogeneous.cpp index 0bed5598d..26254b757 100644 --- a/test/geo_homogeneous.cpp +++ b/test/geo_homogeneous.cpp @@ -87,15 +87,29 @@ template void homogeneous(void) m0.transpose().rowwise().homogeneous() * t3); // test product with a Transform object - Transform Rt; - Matrix pts, Rt_pts1; - - Rt.setIdentity(); - pts.setRandom(Size,5); - - Rt_pts1 = Rt * pts.colwise().homogeneous(); - // std::cerr << (Rt_pts1 - pts).sum() << "\n"; - VERIFY_IS_MUCH_SMALLER_THAN( (Rt_pts1 - pts).sum(), Scalar(1)); + Transform aff; + Transform caff; + Transform proj; + Matrix pts; + Matrix pts1, pts2; + + aff.affine().setRandom(); + proj = caff = aff; + pts.setRandom(Size,internal::random(1,20)); + + pts1 = pts.colwise().homogeneous(); + VERIFY_IS_APPROX(aff * pts.colwise().homogeneous(), (aff * pts1).colwise().hnormalized()); + VERIFY_IS_APPROX(caff * pts.colwise().homogeneous(), (caff * pts1).colwise().hnormalized()); + VERIFY_IS_APPROX(proj * pts.colwise().homogeneous(), (proj * pts1)); + + VERIFY_IS_APPROX((aff * pts1).colwise().hnormalized(), aff * pts); + VERIFY_IS_APPROX((caff * pts1).colwise().hnormalized(), caff * pts); + + pts2 = pts1; + pts2.row(Size).setRandom(); + VERIFY_IS_APPROX((aff * pts2).colwise().hnormalized(), aff * pts2.colwise().hnormalized()); + VERIFY_IS_APPROX((caff * pts2).colwise().hnormalized(), caff * pts2.colwise().hnormalized()); + VERIFY_IS_APPROX((proj * pts2).colwise().hnormalized(), (proj * pts2.colwise().hnormalized().colwise().homogeneous()).colwise().hnormalized()); } void test_geo_homogeneous() -- cgit v1.2.3