summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzmiao <miao.zhao@mapbox.com>2020-03-10 23:19:44 +0200
committerzmiao <miao.zhao@mapbox.com>2020-03-10 23:22:08 +0200
commitad4b00d4722432d58710ea82254ac845615b65e4 (patch)
tree00c13fdc0b1a87d674d1114eea10d9d633db1a4e
parent518b8ce36a5ad72b16d056ebc0318551f8a1964d (diff)
downloadqtlocation-mapboxgl-upstream/zmiao-geometry-buffer.tar.gz
Using existing function in cheap rulerupstream/zmiao-geometry-buffer
-rw-r--r--test/util/geometry_buffer.test.cpp27
m---------vendor/cheap-ruler-cpp0
2 files changed, 15 insertions, 12 deletions
diff --git a/test/util/geometry_buffer.test.cpp b/test/util/geometry_buffer.test.cpp
index a1ea8ec366..923d03bd7f 100644
--- a/test/util/geometry_buffer.test.cpp
+++ b/test/util/geometry_buffer.test.cpp
@@ -122,11 +122,12 @@ TEST(GeometryBuffer, BufferForLine) {
ASSERT_EQ(1, polygon1.size());
const auto& ring1 = polygon1[0];
ASSERT_EQ(10, ring1.size());
- const mapbox::geometry::point<double> a(24.93696391582489, 60.16926456940512),
- b(24.938240647315975, 60.16974755943638);
- mapbox::cheap_ruler::CheapRuler ruler2(a.y, mapbox::cheap_ruler::CheapRuler::Unit::Meters);
+ const mapbox::geometry::line_string<double> lineString{{24.93696391582489, 60.16926456940512},
+ {24.938240647315975, 60.16974755943638}};
+ mapbox::cheap_ruler::CheapRuler ruler2(lineString[0].y, mapbox::cheap_ruler::CheapRuler::Unit::Meters);
for (size_t i = 0; i < ring1.size(); i++) {
- auto actualDistance = ruler2.distanceToLineSegment(ring1[i], a, b);
+ auto nearestPoint = std::get<0>(ruler2.pointOnLine(lineString, ring1[i]));
+ auto actualDistance = ruler2.distance(nearestPoint, ring1[i]);
// Allow 0.5 meter's error, which is 5 meters per 1km
EXPECT_NEAR(100.0, actualDistance, 0.5);
}
@@ -167,11 +168,12 @@ TEST(GeometryBuffer, BufferForLines) {
ASSERT_EQ(1, polygon1.size());
const auto& ring1 = polygon1[0];
ASSERT_EQ(20, ring1.size());
- const mapbox::geometry::point<double> a1(24.93696391582489, 60.16926456940512),
- b1(24.938240647315975, 60.16974755943638);
- mapbox::cheap_ruler::CheapRuler ruler1(a1.y, mapbox::cheap_ruler::CheapRuler::Unit::Meters);
+ const mapbox::geometry::line_string<double> lineString{{24.93696391582489, 60.16926456940512},
+ {24.938240647315975, 60.16974755943638}};
+ mapbox::cheap_ruler::CheapRuler ruler1(lineString[0].y, mapbox::cheap_ruler::CheapRuler::Unit::Meters);
for (size_t i = 0; i < ring1.size(); i++) {
- auto actualDistance = ruler1.distanceToLineSegment(ring1[i], a1, b1);
+ auto nearestPoint = std::get<0>(ruler1.pointOnLine(lineString, ring1[i]));
+ auto actualDistance = ruler1.distance(nearestPoint, ring1[i]);
// Allow 0.25 meter's error, which is 5 meters per 1km
EXPECT_NEAR(50.0, actualDistance, 0.25);
}
@@ -180,11 +182,12 @@ TEST(GeometryBuffer, BufferForLines) {
ASSERT_EQ(1, polygon2.size());
const auto& ring2 = polygon2[0];
ASSERT_EQ(20, ring2.size());
- const mapbox::geometry::point<double> a2(24.93122935295105, 60.167383242200444),
- b2(24.931269586086273, 60.16739658532588);
- mapbox::cheap_ruler::CheapRuler ruler2(a1.y, mapbox::cheap_ruler::CheapRuler::Unit::Meters);
+ const mapbox::geometry::line_string<double> lineString2{{24.93122935295105, 60.167383242200444},
+ {24.931269586086273, 60.16739658532588}};
+ mapbox::cheap_ruler::CheapRuler ruler2(lineString2[0].y, mapbox::cheap_ruler::CheapRuler::Unit::Meters);
for (size_t i = 0; i < ring2.size(); i++) {
- auto actualDistance = ruler2.distanceToLineSegment(ring2[i], a2, b2);
+ auto nearestPoint = std::get<0>(ruler2.pointOnLine(lineString, ring1[i]));
+ auto actualDistance = ruler2.distance(nearestPoint, ring1[i]);
// Allow 0.25 meter's error, which is 5 meters per 1km
EXPECT_NEAR(50.0, actualDistance, 0.25);
}
diff --git a/vendor/cheap-ruler-cpp b/vendor/cheap-ruler-cpp
-Subproject a65a1438c70bc2433abda383e3bd64d98cc50d0
+Subproject 98cbe70dab74c5b77f139013ea5b3623d3ba3dc