Opened 8 years ago
Closed 8 years ago
#10562 closed Bugs (fixed)
Wrong number of Points returned by convex_hull()
Reported by: | awulkiew | Owned by: | Barend Gehrels |
---|---|---|---|
Milestone: | Boost 1.57.0 | Component: | geometry |
Version: | Boost Development Trunk | Severity: | Problem |
Keywords: | convex_hull | Cc: |
Description
If a valid Polygon is generated by a convex_hull() function, the Points of a closed Polygon are always returned (duplicated first Point at the end of a Range), even if an open Polygon is passed as the output.
Example:
namespace bg = boost::geometry; typedef bg::model::point<double, 2, bg::cs::cartesian> point; typedef bg::model::polygon<point, true, false> polygon; typedef bg::model::polygon<point, true, true> polygon_closed; typedef bg::model::multi_point<point> multi_point; multi_point mp; bg::append(mp, point(1, 1)); bg::append(mp, point(2, 2)); bg::append(mp, point(2, 1)); bg::append(mp, point(1, 2)); polygon res; polygon_closed res_c; bg::convex_hull(mp, res); std::cout << bg::closure<polygon>::value << std::endl; std::cout << res.outer().size() << std::endl; std::cout << bg::wkt(res) << std::endl; bg::convex_hull(mp, res_c); std::cout << bg::closure<polygon_closed>::value << std::endl; std::cout << res_c.outer().size() << std::endl; std::cout << bg::wkt(res_c) << std::endl;
Output:
0 5 POLYGON((1 1,1 2,2 2,2 1,1 1)) 1 5 POLYGON((1 1,1 2,2 2,2 1,1 1))
On the other hand when an invalid Polygon is generated, a convex hull of a 1-Point MultiPoint or 2-Point Linestring always 3-Point Polygon is generated. The smallest number of Points of a valid, closed Polygon should be 4. The generated Polygon isn't valid but the number of Points could be consistent.
Example:
multi_point mp; bg::append(mp, point(1, 1));
Output:
0 3 POLYGON((1 1,1 1,1 1))
Example:
multi_point mp; bg::append(mp, point(1, 1)); bg::append(mp, point(2, 2));
Output:
0 3 POLYGON((1 1,2 2,1 1))
Change History (1)
comment:1 by , 8 years ago
Milestone: | To Be Determined → Boost 1.57.0 |
---|---|
Resolution: | → fixed |
Status: | new → closed |
Note:
See TracTickets
for help on using tickets.