Повышаю. Тип полигона Polygon (boost::polygon::polygon_data) адаптирован к Boost. Концепция геометрического кольца.
Повышаю. Точки полигона (а также полигоны) могут использоваться Boost. Геометрия. Две библиотеки можно использовать вместе. Используя усилитель::polygon::polygon_data<...>, алгоритмы от обоих Boost. Полигон и буст. Геометрию можно назвать
Ring Concept
#include <boost/geometry/geometries/adapted/boost_polygon.hpp>
Стандартный заголовок<boost/geometry.hpp
>не включает этот заголовок.
Как использовать Boost. Polygon polygon_data в системе Boost. Геометрия
#include <iostream>
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/adapted/boost_polygon.hpp>
int main()
{
typedef boost::polygon::polygon_data<int> polygon;
typedef boost::polygon::polygon_traits<polygon>::point_type point;
point pts[5] = {
boost::polygon::construct<point>(0, 0),
boost::polygon::construct<point>(0, 10),
boost::polygon::construct<point>(10, 10),
boost::polygon::construct<point>(10, 0),
boost::polygon::construct<point>(0, 0)
};
polygon poly;
boost::polygon::set_points(poly, pts, pts+5);
std::cout << "Area (using Boost.Geometry): "
<< boost::geometry::area(poly) << std::endl;
std::cout << "Area (using Boost.Polygon): "
<< boost::polygon::area(poly) << std::endl;
return 0;
}
Результат:
Area (using Boost.Geometry): 100
Area (using Boost.Polygon): 100