Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

model::polygon

Boost , Chapter 1. Geometry , Models

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Полигон содержит внешнее кольцо и ноль или более внутренних колец.

Model of

Polygon Concept

Synopsis

template<typename Point, bool ClockWise, bool Closed, template< typename, typename > class PointList,
         template< typename, typename > class RingList, template< typename > class PointAlloc, template< typename > class RingAlloc>
class model::polygon
{
  // ...
};

Template parameter(s)

Параметр

По умолчанию

Описание

Буль закрыт

тип контейнера для точек, например std::vector, std::list, std::deque

std::allocator

контейнер-аллокатор, для точек

шаблон <имя типа > класс RingAlloc

std::allocator

контейнер-аллокатор, для колец

Constructor(s)

Функция

Описание

Параметры

polygon()

Конструктор по умолчанию, создающий пустой многоугольник.

polygon(std::initializer_list< ring_type > l)

Конструктор, принимающий std::initializer_list, заполняющий полигон.

std::initializer_list< ring_type >: l:

Member Function(s)

Функция

Описание

Параметры

Возвращение

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] -->
Header

Либо

#include <boost/geometry/geometries/geometries.hpp>

Либо

#include <boost/geometry/geometries/polygon.hpp>

Examples

Декларация и использование Роста. Геометрическая модель: полигон, моделирование концепции полигона

#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; 1
    polygon_t poly1; 2
#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}}}; 3
#endif
    bg::append(poly1.outer(), point_t(0.0, 0.0)); 4
    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); 5
    bg::append(poly1.inners()[0], point_t(1.0, 1.0)); 6
    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;
}

1

Параметры по умолчанию, по часовой стрелке, закрытый полигон.

2

По умолчанию - построить полигон.

3

Постройте многоугольник, содержащий внешнее и внутреннее кольцо, используя унифицированный синтаксис инициализации C++11.

4

Добавить точку к внешнему кольцу.

5

Размер контейнера внутренних колец.

6

Приложите точку к внутреннему кольцу.

Результат:

16

PrevUpHomeNext

Статья model::polygon раздела Chapter 1. Geometry Models может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Models ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 18:08:21/0.0072989463806152/0