我不确定,但我觉得
收集
适用于
multi_linestring
或
multi_polygon
输入。
以下是编译的:
Live On Coliru
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/linestring.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/algorithms/sym_difference.hpp>
#include <iostream>
#include <vector>
namespace bg = boost::geometry;
typedef bg::model::d2::point_xy<double> geo2dpoint;
typedef bg::model::polygon<geo2dpoint> polygon;
typedef bg::model::linestring<geo2dpoint> linestr;
typedef bg::model::multi_linestring<linestr> multi_linestr;
int main() {
polygon poly { { { 2.0, 1.3 }, { 4.1, 3.0 }, { 5.3, 2.6 }, { 2.9, 0.7 }, { 2.0, 1.3 } } };
multi_linestr line1 { { { 2., 1. }, { 5., 3. } } };
multi_linestr out;
bg::sym_difference(line1, poly, out);
std::cout << bg::dsv(poly) << std::endl;
std::cout << bg::dsv(line1) << std::endl;
std::cout << bg::dsv(out) << std::endl;
}
印刷品
(((2, 1.3), (4.1, 3), (5.3, 2.6), (2.9, 0.7), (2, 1.3)))
(((2, 1), (5, 3)))
(((2, 1), (2.225, 1.15)), ((4.7, 2.8), (5, 3)), ((2.225, 1.15), (4.7, 2.8)))