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

Boost Polygon Library: Polygon 45 With Holes Concept

Boost , ,


Polygon 45 With Holes Concept

Полигон_45_with_holes concept tag -полигон_45_with_holes_concept

Для регистрации пользователя определен тип как модельpolygon_45_with_holesКонцепт, специализирующий понятие геометрии метафункции для данного типа.   В примере ниже CPolygon45WithHoles зарегистрирован как модель полигона_45_with_holes Концепция.

шаблон<>
структурная геометрия_концепция{ typedef polygon_45_with_holes_concept type; };

Семантика многоугольника_45_with_holes - это многоугольник_45, который может обеспечивать итераторы над отверстиями, которые также являются многоугольниками_45.  Изменяемый многоугольник_45_with_holes также должен иметь возможность устанавливать свою геометрию на основе диапазона интератора над отверстиями многоугольника_45.   В библиотеке не существует конвенции об обмотке отверстий.

Ниже показан по умолчанию многоугольник с чертами отверстий. Специализация этих черт требуется для типов, которые не соответствуют по умолчанию.

template
struct polygon_with_holes_traits {
     typedef typename T::iterator_holes_type iterator_holes_type;
      type typename T::hole_type hole_type;
       T&t) {
                          T&t) {
        возврат t.end_holes();
                                 

template
struct polygon_with_holes_mutable_traits {
                                          &

Объект, являющийся модельюполигона_45_with_holes_concept, может рассматриваться как модель любого из его усовершенствований, если он определен во время выполнения в соответствии с ограничением этих понятий.   Эта концепция литья осуществляется черезview_as<>()Функция.

view_as(polygon_45_with_holes_object)
view_as(polygon_45_with_holes_object)
view_as

Возвратное значениеview_as<>()может быть передан в любой интерфейс, который ожидает объект концептуального типа, указанного в его шаблонном параметре.

Functions

template <typename T>
point_iterator_type begin_points(const T& polygon)
Ожидает модель полигона_45_with_holes. Возвращает начальный итератор по диапазону точек, которые соответствуют вершинам многоугольника.
template <typename T>
point_iterator_type end_points(const T& polygon)
Ожидает модель полигона_45_with_holes. Возвращает конечный итератор по диапазону точек, которые соответствуют вершинам многоугольника.
template <typename T>
hole_iterator_type begin_holes(const T& polygon)
Ожидает модель полигона_45_with_holes. Возвращает начальный итератор по диапазону координат, которые соответствуют горизонтальным и вертикальным краям.
template <typename T>
hole_iterator_type end_holes(const T& polygon)
Ожидает модель полигона_45_with_holes. Возвращает конечный итератор по диапазону координат, которые соответствуют горизонтальным и вертикальным краям.
template <typename T, typename iterator>
void set_points(T& polygon, iterator b, iterator e)
Ожидает модель полигона_45_with_holes.   Устанавливает полигон в точечный диапазон данных [b,e], соответствующий вершинам полигона. 
template <typename T, typename iterator>
void set_holes(T& polygon, iterator b, iterator e)
Ожидает модель полигона_45_with_holes.   Устанавливает многоугольные отверстия в диапазоне данных отверстия [b,e]
template <typename T>
unsigned int size(const T& polygon)
Возвращает количество краев во внешней оболочке полигона_45_с_дырками.  Не включает размеры отверстий.
template <typename T1, typename T2>
T1& assign(T1& left, const T2& right)
Копии данных с правого объекта, который моделирует многоугольник_45_with_holes или одно из его уточнений в левый объект, который моделирует Полигон 45 с дырками.
template <typename T, typename point_type>
bool contains(const T&, const point_type& point,
              bool consider_touch=true)
Учитывая объект, который моделирует полигон_45_с_дырками, и объект, который моделирует точку, возвращается истинно, если оболочка полигона содержит точку, а одно из ее отверстий не содержит точку.   Если флаг consider_touch является истинным, он вернется истинным, если точка находится вдоль границы полигона или одного из его отверстий.
// get the center coordinate
template <typename T, typename point_type>
void center(point_type& p, const T& polygon)
Устанавливает объект, который модели указывают на центральную точку ограничивающего ящика объекта, который моделирует полигон_45_с_дырками.
template <typename T, typename rectangle_type>
bool extents(rectangle_type& bbox, const T& polygon)
Устанавливает объект, который модели прямоугольник к ограничивающему ящику объекта, который моделирует многоугольник_45_с_дырками и возвращается истинным.   Возвращается ложным и оставляет коробку неизменной, если полигон пуст.
template <typename T>
manhattan_area_type area(const T& polygon)
Возвращает область объекта, моделирующего полигон_45_с_дырками, включая вычитание области его отверстий из области внешнего полигона оболочки.
template <typename T>
direction_1d winding(const T& polygon)
Возвращает направление обмотки объекта, моделирующего многоугольник_45_с_дырками, LOW == CLOCKWISE, HIGH = COUNTERCLOCKWISE
template <typename T>
coordinate_difference perimeter(const T& polygon)
Возвращает длину периметра объекта, который моделирует полигон_45, включая периметры отверстий.
template <typename T, typename transform_type>
T& transform(T& polygon, const transform_type&)
Применяет преобразование() на вершинах многоугольника и устанавливает многоугольник на описанный в результате преобразования его вершин.   Также применяется преобразование() на отверстиях полигона.
template <typename T>
T& scale_up(T& polygon, unsigned_area_type factor)
Масштабирует внешнюю оболочку и отверстия объекта, который моделирует полигон_45 по неподписанному фактору.
template <typename T>
T& scale_down(T& polygon, unsigned_area_type factor)
Масштабирует внешнюю оболочку и отверстия объекта, который моделирует полигон_45 по неподписанному фактору.
template <typename T, scaling_type>
T& scale(T& rectangle, double scaling)
Масштабирует внешнюю оболочку и отверстия объекта, который моделирует полигон_45 по коэффициенту плавающей точки.
template <typename T>
T& move(T& polygon, orientation_2d,
        coordinate_difference displacement)
Добавляет значение смещения для координаты, обозначенной ориентацией_2d вершин объекта, моделирующего полигон_45.
template <typename polygon_type, typename point_type>
polygon_type& convolve(polygon_type& polygon,
                       const point_type& point)
Сочетает значения координат точки с внешней оболочкой и отверстиями объекта, моделирующего полигон_45_с_дырками.

Polygon 45 With Holes Data

Библиотека предоставляет модель полигона 45 с концепцией отверстий, объявленнойшаблономpolygon_45_with_holes_data, где T — тип координат.

Этот тип данных используется внутри, когда требуется 45-градусный полигон с отверстиями и доступен пользователю библиотеки, который находит удобным использовать тип данных библиотечного полигона вместо предоставления своих собственных.   Тип данных реализован для удобства использования с библиотечными чертами.

Members

geometry_type polygon_45_with_holes_concept
coordinate_type Т
iterator_type Итератор над вершинами point_dataвершины полигона
iterator_holes_type Итератор над дырочными многоугольниками типа polygon_45_data.
polygon_45_with_holes_data() По умолчанию построен полигон.
polygon_45_with_holes_data(const polygon_45_with_holes_data& that) Копирование конструкции
polygon_45_with_holes_data&
operator=
(const polygon_45_with_holes_data& that)
Оператор назначения.
template <typename T2> polygon_45_with_holes_data& 
operator=
(const T2& that) const
Назначают из объекта, представляющего собой модель полигона 45 с отверстиями.
iterator_type begin() const Получите начальный итератор над вершинами многоугольника.
iterator_type end() const Получите конечный итератор поверх вершин полигона.
iterator_hole_type begin_holes() const Получите начальный компактный итератор по неизбыточным координатам полигона.
iterator_hole_type end_holes() const Получите концевой компактный итератор по неизбыточным координатам полигона.
std::size_t size() const Получить количество элементов в последовательности, хранящейся на полигоне, обычно равное числу краев полигона.
std::size_t size_holes() const Получить количество отверстий в полигоне
template <typename iT> 
void set(iT begin_points, iT end_points)
Устанавливает полигон в диапазон итераторов точек.   Не проводится проверка, чтобы убедиться, что точки описывают 45-градусный показатель.
template <typename iT> 
void set_holes(iT begin_holes, iT end_choless)
Устанавливает полигоновые отверстия в диапазоне итераторов дырочных полигонов.   Эти многоугольники во входном диапазоне могут представлять собой либо полигон_45_data, либо полигон_45_with_holes_data, либо любой тип, который обеспечивает функции начального и конечного членов для итерации поверх point_data.
 
Copyright: Авторское право © Intel Corporation 2008-2010.
License: Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

Статья Boost Polygon Library: Polygon 45 With Holes Concept раздела может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 09:50:37/0.010037899017334/1