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

Boost Polygon Library: Polygon With Holes Concept

Boost , ,


Polygon With Holes Concept

Полигон_с_дырами концепция тег многоугольник_с_дыр_концепт

Чтобы зарегистрировать определенный тип пользователя как модель polygon_with_holes concept, специализируется на мета-функции геометрической концепции для этого типа.   В приведенном ниже примере CPolygonWithHoles зарегистрирована как модель полигона_with_holes  концепция.

template <>
struct geo_concept { typedef polygon_with_holes_concept type; };

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

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

template
struct polygon_with_holes_traits {
     typedef name T::iterator_holes_type iterator_holes_type;
    typedef name T::hole_typehole_typehole_type;
     iterator_holes_type start_holes(const T& t) {
         return t.begin_holes();
     }
         iterator_holes_type end_holes(const Tsphole & nbsp;          возврат t.end_holes();
     }
    bsp; nbsp

Шаблон
struct polygon_with_holes_mutable_traits {
    ..

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

view_as (polygon_with_holes_object)
view_as<polygon_90_concept>(polygon_with_holes_object)
view_as<polygon_90_with_holes_concept>(polygon_with_holes_object)
view_as<polygon_45_concept>(polygon_with_holes_object)
view_as<polygon_45_with_holes_concept>(polygon_with_holes_object)
view_as<polygon_concept>(polygon_with_holes_object)[ORIG_END] -->

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

Functions

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

Polygon With Holes Data

Библиотека предоставляет модель полигона с концепцией отверстий, заявленной template polygon_with_holes_data где T - это тип координат.

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

Members

geometry_type polygon_with_holes_concept
coordinate_type T
iterator_type Итератор над вершинами point_data вершинами полигона
iterator_holes_type Установщик над многоугольниками типа многоугольник_data.
polygon_with_holes_data() Создание хранилища полигон.
polygon_with_holes_data(const polygon_with_holes_data& that) Конструкция
polygon_with_holes_data&
operator=
(const polygon_with_holes_data& that)
Оператор назначения.
template <typename T2> polygon_with_holes_data& 
operator=
(const T2& that) const
Назначить из объекта, который представляет собой модель полигона с отверстиями.
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)
Настраивает полигон на итераторный диапазон точек.
template <typename iT> 
void set_holes(iT begin_holes, iT end_choless)
Устанавливает многоугольные отверстия итератора полигона.   Эти многоугольники в диапазоне ввода могут быть либо многоугольными_данными, либо многоугольными_с_дырями_данными, либо любым типом, который предоставляет начальные и конечные функции для итерации над point_data.
 
Copyright: 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 With Holes Concept раздела может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 20:07:20/0.029900789260864/1