Boost.Geometry expand

expand()は、他の図形でBoxを拡張していくアルゴリズムです。
第2引数の図形で、第1引数のBoxを拡張します。


expand()は、envelope()の実装などで使われます。

#include <iostream>
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/box.hpp>

namespace bg = boost::geometry;

typedef bg::model::d2::point_xy<double> point;
typedef bg::model::box<point> box;

int main()
{
    box bx = bg::make_inverse<box>();

    bg::expand(bx, point(1, 1));
    std::cout << "1: " << bg::dsv(bx) << std::endl;

    bg::expand(bx, point(0, 0));
    std::cout << "2: " << bg::dsv(bx) << std::endl;

    bg::expand(bx, point(3, 3));
    std::cout << "3: " << bg::dsv(bx) << std::endl;

    bg::expand(bx, point(2, 5));
    std::cout << "4: " << bg::dsv(bx) << std::endl;
}
1: ((1, 1), (1, 1))
2: ((0, 0), (1, 1))
3: ((0, 0), (3, 3))
4: ((0, 0), (3, 5))

ちなみに、make_inverse()は、逆無限座標の図形を生成するヘルパ関数です。
拡張する図形の初期値として使用できます。


参照:
expand algorithm

make_inverse