Boost.Geometry simplify
simplify()は、図形内の点を間引いて、より単純な図形に変換するアルゴリズムです。
第1引数に単純化する元となる図形、第2引数に出力先変数への参照、第3引数に単純化の距離を指定します。
以下は、線を単純化する例:
#include <iostream> #include <boost/geometry.hpp> #include <boost/geometry/geometries/point_xy.hpp> #include <boost/geometry/geometries/linestring.hpp> #include <boost/assign/list_of.hpp> namespace bg = boost::geometry; typedef bg::model::d2::point_xy<double> point; typedef bg::model::linestring<point> linestring; int main() { const linestring line = boost::assign::list_of<point> (3, 3) (3.8, 4) (6, 6) (4, 9) (5, 8) (7, 7) ; linestring result; bg::simplify(line, result, 0.5); std::cout << bg::dsv(line) << std::endl; std::cout << bg::dsv(result) << std::endl; }
((3, 3), (3.8, 4), (6, 6), (4, 9), (5, 8), (7, 7)) ((3, 3), (6, 6), (4, 9), (7, 7))
緑が元の線、青がsimplifyした線です。