Boost 1.48.0から、boost::geometry::covered_byアルゴリズムが追加されました。
(ただし、リリースノートには記載されていますが、アンドキュメントです。)
以前からあったwithinアルゴリズムは「境界線上ではない内側か」を判定するものでしたが、
covered_byは、「境界線上もしくは内側か」を判定するアルゴリズムです。
#include <cassert> #include <boost/geometry/geometry.hpp> #include <boost/geometry/algorithms/within.hpp> #include <boost/geometry/algorithms/covered_by.hpp> namespace bg = boost::geometry; typedef bg::model::d2::point_xy<double> point_type; typedef bg::model::box<point_type> box_type; int main() { const point_type top_left(0, 0); const point_type bottom_right(3, 3); const box_type box(top_left, bottom_right); // 内側 { const point_type p(1.5, 1.5); assert(bg::within(p, box)); assert(bg::covered_by(p, box)); } // 境界線上 { const point_type p(3, 3); assert(!bg::within(p, box)); assert(bg::covered_by(p, box)); } }