Skip to content

Commit

Permalink
some refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
klemense1 committed Jan 15, 2020
1 parent 9ab0709 commit 40c4a4b
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 28 deletions.
13 changes: 6 additions & 7 deletions modules/geometry/line.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -177,21 +177,20 @@ inline T length(const Line &line) {
return bg::length<T>(line.obj_);
}

inline Line rotate(const Line &line, float hdg) {
namespace trans = boost::geometry::strategy::transform;
trans::rotate_transformer<boost::geometry::radian, double, 2, 2> rotate(hdg);
inline Line rotate(const Line& line, float hdg) {
using boost::geometry::strategy::transform::rotate_transformer;
rotate_transformer<boost::geometry::radian, double, 2, 2> 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<double, 2, 2> translate(x, y);
inline Line translate(const Line& line, float x, float y) {
using boost::geometry::strategy::transform::translate_transformer;
translate_transformer<double, 2, 2> translate(x, y);
Line line_translated;
boost::geometry::transform(line.obj_, line_translated.obj_, translate);
line_translated.recompute_s();
return line_translated;
}

Expand Down
25 changes: 4 additions & 21 deletions modules/geometry/tests/geometry_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -130,53 +130,36 @@ 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;

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);
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);

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);
EXPECT_NEAR(bg::get<0>(obj_transformed.obj_.at(1)), 1, 0.1);
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<boost::geometry::radian, double, 2, 2> 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;
Expand Down

0 comments on commit 40c4a4b

Please sign in to comment.