読者です 読者をやめる 読者になる 読者になる

Boost.Geometry area

C++

area()アルゴリズムは、図形の面積を求める関数です。

#include <iostream>
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/box.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::box<point> box;
    typedef bg::model::polygon<point> polygon;

    // box
    {
        const box x(point(0, 0), point(3, 3));

        const double result = bg::area(x);
        std::cout << result << std::endl;
    }
    // polygon
    {
        polygon x;
        bg::exterior_ring(x) = boost::assign::list_of<point>(0, 0)(0, 3)(3, 3)(3, 0);

        const double result = bg::area(x);
        std::cout << result << std::endl;
    }
}
9
9

area()の第2引数にはStrategyポリシーを指定することができ、面積を計算するためのポリシーを別途指定できるようです。
Boost 1.47.0時点でのBoost.Geometryでは、surveyorとhuillerという2つのStrategyが用意されています。
前者は三角形分割の測量アルゴリズムで、後者は円の面積で使用するアルゴリズムのようです。
これの使い方はテストにあるので、気になる方はそちらを参照してください。/libs/geometry/test/area.cpp。


参照:
area algorithm
area algorithm(with strategy)