mirror of
https://github.com/boostorg/geometry.git
synced 2026-02-11 11:52:11 +00:00
[buffer] support degenerate linestrings containing one point. In that
case point-buffer is applied. Including updated unit tests
This commit is contained in:
@@ -27,6 +27,10 @@ static std::string const overlapping = "LINESTRING(0 0,4 5,7 4,10 6, 10 2,2 2)";
|
||||
static std::string const curve = "LINESTRING(2 7,3 5,5 4,7 5,8 7)";
|
||||
static std::string const tripod = "LINESTRING(5 0,5 5,1 8,5 5,9 8)"; // with spike
|
||||
|
||||
static std::string const degenerate1 = "LINESTRING(5 5)";
|
||||
static std::string const degenerate2 = "LINESTRING(5 5,5 5)";
|
||||
static std::string const degenerate3 = "LINESTRING(5 5,5 5,5 5)";
|
||||
|
||||
static std::string const for_collinear = "LINESTRING(2 0,0 0,0 4,6 4,6 0,4 0)";
|
||||
static std::string const for_collinear2 = "LINESTRING(2 1,2 0,0 0,0 4,6 4,6 0,4 0,4 1)";
|
||||
|
||||
@@ -133,6 +137,16 @@ void test_all()
|
||||
test_one<linestring, polygon>("field_sprayer1", field_sprayer1, join_round, end_round, 718.761877, 16.5, 6.5);
|
||||
test_one<linestring, polygon>("field_sprayer1", field_sprayer1, join_miter, end_round, 718.939628, 16.5, 6.5);
|
||||
|
||||
test_one<linestring, polygon>("degenerate1", degenerate1, join_round, end_round, 28.25, 3.0);
|
||||
#if defined(BOOST_GEOMETRY_BUFFER_INCLUDE_FAILING_TESTS)
|
||||
test_one<linestring, polygon>("degenerate2", degenerate2, join_miter, end_flat, 99.99, 3.0);
|
||||
test_one<linestring, polygon>("degenerate2", degenerate2, join_round, end_round, 99.99, 3.0);
|
||||
test_one<linestring, polygon>("degenerate3", degenerate3, join_miter, end_flat, 99.99, 3.0);
|
||||
test_one<linestring, polygon>("degenerate3", degenerate3, join_round, end_round, 99.99, 3.0);
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
double tolerance = 1.0e-10;
|
||||
|
||||
test_one<linestring, polygon>("aimes120", aimes120, join_miter, end_flat, 1.62669948622351512e-08, 0.000018, 0.000018, false, tolerance);
|
||||
|
||||
@@ -15,6 +15,11 @@ static std::string const simplex = "MULTILINESTRING((0 0,4 5),(5 4,10 0))";
|
||||
static std::string const two_bends = "MULTILINESTRING((0 0,4 5,7 4,10 6),(1 5,5 9,8 6))";
|
||||
static std::string const turn_inside = "MULTILINESTRING((0 0,4 5,7 4,10 6),(1 5,5 9,8 6),(0 4,-2 6))";
|
||||
|
||||
static std::string const degenerate0 = "MULTILINESTRING()";
|
||||
static std::string const degenerate1 = "MULTILINESTRING((5 5))";
|
||||
static std::string const degenerate2 = "MULTILINESTRING((5 5),(9 9))";
|
||||
static std::string const degenerate3 = "MULTILINESTRING((5 5),(9 9),(4 10))";
|
||||
|
||||
|
||||
template <typename P>
|
||||
void test_all()
|
||||
@@ -49,6 +54,11 @@ void test_all()
|
||||
test_one<multi_linestring_type, polygon>("two_bends", two_bends, join_round_by_divide, end_flat, 64.6217, 1.5, 1.5);
|
||||
test_one<multi_linestring_type, polygon>("two_bends", two_bends, join_miter, end_flat, 65.1834, 1.5, 1.5);
|
||||
test_one<multi_linestring_type, polygon>("two_bends", two_bends, join_miter, end_round, 75.2917, 1.5, 1.5);
|
||||
|
||||
test_one<multi_linestring_type, polygon>("degenerate0", degenerate0, join_round, end_round, 0.0, 3.0, 3.0);
|
||||
test_one<multi_linestring_type, polygon>("degenerate1", degenerate1, join_round, end_round, 28.2503, 3.0, 3.0);
|
||||
test_one<multi_linestring_type, polygon>("degenerate2", degenerate2, join_round, end_round, 56.0457, 3.0, 3.0);
|
||||
test_one<multi_linestring_type, polygon>("degenerate3", degenerate3, join_round, end_round, 80.4531, 3.0, 3.0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user