![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
model::multi_polygonBoost , Chapter 1. Geometry , Models
|
Параметр |
По умолчанию |
Описание |
---|---|---|
Полигон типа | ||
шаблон < имя типа, имя типа > | std::vector | |
Шаблон < Типим > класс Аллокатор | std::allocator |
Функция |
Описание |
Параметры |
---|---|---|
multi_polygon()
| По умолчанию конструктор, создающий пустой мульти_полигон. | |
multi_polygon(std::initializer_list< Polygon > l)
| Конструктор принимает std::initializer_list, заполняя мульти_полигон. | std::initializer_list< Polygon >: l: |
Или
#include <boost/geometry/geometries/geometries.hpp>
Или
#include <boost/геометрия/геометрия//
Декларация и использование Посла. Geometry model::multi_polygon, моделирование MultiPolygon Concept
#include <iostream> #include <boost/geometry.hpp> #include <boost/geometry/geometries/geometries.hpp> namespace bg = boost::geometry; int main() { typedef bg::model::point<double, 2, bg::cs::cartesian> point_t; typedef bg::model::polygon<point_t> polygon_t;typedef bg::model::multi_polygon<polygon_t> mpolygon_t;
mpolygon_t mpoly1;
#if !defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX) \ && !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) mpolygon_t mpoly2{{{{0.0, 0.0}, {0.0, 5.0}, {5.0, 5.0}, {5.0, 0.0}, {0.0, 0.0}}, {{1.0, 1.0}, {4.0, 1.0}, {4.0, 4.0}, {1.0, 4.0}, {1.0, 1.0}}}, {{{5.0, 5.0}, {5.0, 6.0}, {6.0, 6.0}, {6.0, 5.0}, {5.0, 5.0}}}};
#endif mpoly1.resize(2);
bg::append(mpoly1[0].outer(), point_t(0.0, 0.0));
bg::append(mpoly1[0].outer(), point_t(0.0, 5.0)); bg::append(mpoly1[0].outer(), point_t(5.0, 5.0)); bg::append(mpoly1[0].outer(), point_t(5.0, 0.0)); bg::append(mpoly1[0].outer(), point_t(0.0, 0.0)); mpoly1[0].inners().resize(1);
bg::append(mpoly1[0].inners()[0], point_t(1.0, 1.0));
bg::append(mpoly1[0].inners()[0], point_t(4.0, 1.0)); bg::append(mpoly1[0].inners()[0], point_t(4.0, 4.0)); bg::append(mpoly1[0].inners()[0], point_t(1.0, 4.0)); bg::append(mpoly1[0].inners()[0], point_t(1.0, 1.0)); bg::append(mpoly1[1].outer(), point_t(5.0, 5.0));
bg::append(mpoly1[1].outer(), point_t(5.0, 6.0)); bg::append(mpoly1[1].outer(), point_t(6.0, 6.0)); bg::append(mpoly1[1].outer(), point_t(6.0, 5.0)); bg::append(mpoly1[1].outer(), point_t(5.0, 5.0)); double a = bg::area(mpoly1); std::cout << a << std::endl; return 0; }
Параметры по умолчанию, часовой, закрытый полигон. | |
Clockwise, closed multi_polygon. | |
По умолчанию строится мульти_полигон. | |
Построить мульти_полигон, содержащий два полигона, используя единый синтаксис инициализации C++11. | |
Изменить размер мульти_полигон, хранить два полигона. | |
Добавить точку на внешнее кольцо первого полигона. | |
Изменить размер контейнера внутренних колец первого полигона. | |
Добавьте точку на внутреннее кольцо первого полигона. | |
Добавить точку на внешнее кольцо второго полигона. |
Результат:
17
Статья model::multi_polygon раздела Chapter 1. Geometry Models может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |