centroid()は、図形の中心座標を求める関数です。
第1引数に対象の図形、第2引数として中心座標の結果を格納する変数の参照を渡します。
#include <iostream> #include <boost/geometry.hpp> #include <boost/geometry/geometries/point_xy.hpp> #include <boost/geometry/geometries/polygon.hpp> #include <boost/assign/list_of.hpp> namespace bg = boost::geometry; int main() { typedef bg::model::d2::point_xy<double> point; typedef bg::model::polygon<point> polygon; polygon poly; bg::exterior_ring(poly) = boost::assign::list_of<point> (2, 0) (4, 3) (0, 3) ; point p; bg::centroid(poly, p); std::cout << bg::dsv(p) << std::endl; }
(1.55556, 1.66667)
return_centroid()を使うと、参照ではなく戻り値で座標を返してくれます。
テンプレート引数で座標を表すPoint Conceptの型を指定します。
#include <iostream> #include <boost/geometry.hpp> #include <boost/geometry/geometries/point_xy.hpp> #include <boost/geometry/geometries/polygon.hpp> #include <boost/assign/list_of.hpp> namespace bg = boost::geometry; int main() { typedef bg::model::d2::point_xy<double> point; typedef bg::model::polygon<point> polygon; polygon poly; bg::exterior_ring(poly) = boost::assign::list_of<point> (2, 0) (4, 3) (0, 3) ; const point p = bg::return_centroid<point>(poly); std::cout << bg::dsv(p) << std::endl; }
(1.55556, 1.66667)
参照:
centroid algorithm
return_centroid algorithm