![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
model::polygonBoost , Chapter 1. Geometry , Models
|
Параметр |
По умолчанию |
Описание |
---|---|---|
Буль закрыт | ||
тип контейнера для точек, например std::vector, std::list, std::deque | ||
std::allocator | контейнер-аллокатор, для точек | |
шаблон <имя типа > класс RingAlloc | std::allocator | контейнер-аллокатор, для колец |
Функция |
Описание |
Параметры |
---|---|---|
polygon()
| Конструктор по умолчанию, создающий пустой многоугольник. | |
polygon(std::initializer_list< ring_type > l)
| Конструктор, принимающий std::initializer_list, заполняющий полигон. | std::initializer_list< ring_type >: l: |
Функция |
Описание |
Параметры |
Возвращение |
---|---|---|---|
ring_type const & outer()
| |||
inner_container_type const & inners() inner_container_type const & inners() [ORIG_END] --> | |||
ring_type & outer() ring_type & outer() [ORIG_END] --> | |||
inner_container_type & inners()
| |||
void clear() void clear() [ORIG_END] --> |
Либо
#include <boost/geometry/geometries/geometries.hpp>
Либо
#include <boost/geometry/geometries/polygon.hpp>
Декларация и использование Роста. Геометрическая модель: полигон, моделирование концепции полигона
#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;polygon_t poly1;
#if !defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX) \ && !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) polygon_t polygon2{{{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}}};
#endif bg::append(poly1.outer(), point_t(0.0, 0.0));
bg::append(poly1.outer(), point_t(0.0, 5.0)); bg::append(poly1.outer(), point_t(5.0, 5.0)); bg::append(poly1.outer(), point_t(5.0, 0.0)); bg::append(poly1.outer(), point_t(0.0, 0.0)); poly1.inners().resize(1);
bg::append(poly1.inners()[0], point_t(1.0, 1.0));
bg::append(poly1.inners()[0], point_t(4.0, 1.0)); bg::append(poly1.inners()[0], point_t(4.0, 4.0)); bg::append(poly1.inners()[0], point_t(1.0, 4.0)); bg::append(poly1.inners()[0], point_t(1.0, 1.0)); double a = bg::area(poly1); std::cout << a << std::endl; return 0; }
Параметры по умолчанию, по часовой стрелке, закрытый полигон. | |
По умолчанию - построить полигон. | |
Постройте многоугольник, содержащий внешнее и внутреннее кольцо, используя унифицированный синтаксис инициализации C++11. | |
Добавить точку к внешнему кольцу. | |
Размер контейнера внутренних колец. | |
Приложите точку к внутреннему кольцу. |
Результат:
16
Статья model::polygon раздела Chapter 1. Geometry Models может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |