diff --git a/modules/geometry/line.hpp b/modules/geometry/line.hpp index 3afc2067a..482524bc6 100644 --- a/modules/geometry/line.hpp +++ b/modules/geometry/line.hpp @@ -177,21 +177,20 @@ inline T length(const Line &line) { return bg::length(line.obj_); } -inline Line rotate(const Line &line, float hdg) { - namespace trans = boost::geometry::strategy::transform; - trans::rotate_transformer rotate(hdg); +inline Line rotate(const Line& line, float hdg) { + using boost::geometry::strategy::transform::rotate_transformer; + rotate_transformer rotate(hdg); Line line_rotated; boost::geometry::transform(line.obj_, line_rotated.obj_, rotate); line_rotated.recompute_s(); return line_rotated; } -inline Line translate(const Line &line, float x, float y) { - namespace trans = boost::geometry::strategy::transform; - trans::translate_transformer translate(x, y); +inline Line translate(const Line& line, float x, float y) { + using boost::geometry::strategy::transform::translate_transformer; + translate_transformer translate(x, y); Line line_translated; boost::geometry::transform(line.obj_, line_translated.obj_, translate); - line_translated.recompute_s(); return line_translated; } diff --git a/modules/geometry/tests/geometry_test.cc b/modules/geometry/tests/geometry_test.cc index 370c15381..cada22a5b 100644 --- a/modules/geometry/tests/geometry_test.cc +++ b/modules/geometry/tests/geometry_test.cc @@ -130,7 +130,7 @@ TEST(geometry, line) { EXPECT_NEAR(get_nearest_s(l3, Point2d(5, 5)), 0.5 * sqrt(200), 0.1f); } -TEST(geometry, line_rotate) { +TEST(geometry, line_transform) { using modules::geometry::Line; using modules::geometry::Point2d; namespace bg = boost::geometry; @@ -138,12 +138,13 @@ TEST(geometry, line_rotate) { Line line_in; // vertical line_in.add_point(Point2d(0.0f, 0.0f)); line_in.add_point(Point2d(0.0f, 10.0f)); - + float hdg = 3.14159265359; float offset_x = 1; float offset_y = 2; Line obj_rotated = rotate(line_in, hdg); + EXPECT_NEAR(line_in.length(), obj_rotated.length(), 0.01); EXPECT_NEAR(bg::get<0>(obj_rotated.obj_.at(0)), 0, 0); EXPECT_NEAR(bg::get<1>(obj_rotated.obj_.at(0)), 0, 0); @@ -151,6 +152,7 @@ TEST(geometry, line_rotate) { EXPECT_NEAR(bg::get<1>(obj_rotated.obj_.at(1)), -10, 0.1); Line obj_transformed = translate(obj_rotated, offset_x, offset_y); + EXPECT_NEAR(line_in.length(), obj_transformed.length(), 0.01); EXPECT_NEAR(bg::get<0>(obj_transformed.obj_.at(0)), 1, 0); EXPECT_NEAR(bg::get<1>(obj_transformed.obj_.at(0)), 2, 0); @@ -158,25 +160,6 @@ TEST(geometry, line_rotate) { EXPECT_NEAR(bg::get<1>(obj_transformed.obj_.at(1)), -8, 0.1); } -TEST(geometry, line_transform) { - using modules::geometry::Line; - using modules::geometry::Point2d; - using modules::geometry::Polygon; - namespace bg = boost::geometry; - - Line l; // vertical - l.add_point(Point2d(0.0f, 0.0f)); - l.add_point(Point2d(0.0f, 10.0f)); - boost::geometry::strategy::transform::rotate_transformer rotate(3.14159265359); - Line obj_rotated; - boost::geometry::transform(l.obj_, obj_rotated.obj_, rotate); - - EXPECT_NEAR(bg::get<0>(obj_rotated.obj_.at(0)), 0, 0); - EXPECT_NEAR(bg::get<1>(obj_rotated.obj_.at(0)), 0, 0); - EXPECT_NEAR(bg::get<0>(obj_rotated.obj_.at(1)), 0, 0.1); - EXPECT_NEAR(bg::get<1>(obj_rotated.obj_.at(1)), -10, 0.1); -} - TEST(geometry, polygon) { using modules::geometry::Point2d; using modules::geometry::Polygon;