From ca9fad002cf928ac977138de7d9aa96af388f492 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Mon, 24 May 2021 08:54:08 +0200 Subject: [PATCH] 3rd attempt to fix unit test for 2D convex hull of sinking object on RasperryPi --- tests/libslic3r/test_3mf.cpp | 56 +++++++++++++++++++++++++----------- 1 file changed, 40 insertions(+), 16 deletions(-) diff --git a/tests/libslic3r/test_3mf.cpp b/tests/libslic3r/test_3mf.cpp index d988deffb..666db58dc 100644 --- a/tests/libslic3r/test_3mf.cpp +++ b/tests/libslic3r/test_3mf.cpp @@ -93,7 +93,10 @@ SCENARIO("2D convex hull of sinking object", "[3mf]") { // set instance's attitude so that it is rotated, scaled and sinking ModelInstance* instance = object->instances.front(); - instance->set_rotation(Y, -M_PI / 4.0); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + instance->set_rotation(X, -M_PI / 4.0); +// instance->set_rotation(Y, -M_PI / 4.0); +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ instance->set_offset(Vec3d::Zero()); instance->set_scaling_factor({ 2.0, 2.0, 2.0 }); @@ -101,26 +104,47 @@ SCENARIO("2D convex hull of sinking object", "[3mf]") { Polygon hull_2d = object->convex_hull_2d(instance->get_transformation().get_matrix()); // verify result +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Points result = { - { -4242641, -16299551 }, - { -4241, -19502998 }, - { 66824768, -19502998 }, - { 66824768, 19502998 }, - { -4244, 19502998 }, - { -4242640, -8537523 } + { -91501496, -15914144 }, + { 91501496, -15914144 }, + { 91501496, 4243 }, + { 78229680, 4246883 }, + { 56898100, 4246883 }, + { -85501496, 4242641 }, + { -91501496, 4243 } }; - bool res = hull_2d.points.size() == result.size(); - if (res) { - for (size_t i = 0; i < result.size(); ++i) { - Vec3d hull_p(unscale(hull_2d.points[i].x()), unscale(hull_2d.points[i].y()), 0.0); - Vec3d res_p(unscale(result[i].x()), unscale(result[i].y()), 0.0); - res &= res_p.isApprox(hull_p); - } +// Points result = { +// { -4242641, -16299551 }, +// { -4241, -19502998 }, +// { 66824768, -19502998 }, +// { 66824768, 19502998 }, +// { -4244, 19502998 }, +// { -4242640, -8537523 } +// }; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + + +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + for (const Point& p : hull_2d.points) { + std::cout << p.x() << ", " << p.y() << "\n"; } - // this does not work on RaspberryPi for float precision problem: the x of 1st vertex ending up being -4242640 instead of -4242641 -// bool res = hull_2d.points == result; + bool res = hull_2d.points == result; + +// bool res = hull_2d.points.size() == result.size(); +// if (res) { +// for (size_t i = 0; i < result.size(); ++i) { +// Vec3d hull_p(unscale(hull_2d.points[i].x()), unscale(hull_2d.points[i].y()), 0.0); +// Vec3d res_p(unscale(result[i].x()), unscale(result[i].y()), 0.0); +// res &= res_p.isApprox(hull_p); +// } +// } +// +// // this does not work on RaspberryPi for float precision problem: the x of 1st vertex ending up being -4242640 instead of -4242641 +//// bool res = hull_2d.points == result; +//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ THEN("2D convex hull should match with reference") { REQUIRE(res);