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

Boost Polygon Library: Polygon 90 Concept

Boost , ,


Polygon 90 Concept

Тег концепта polygon_90 polygon_90_concept

Для регистрации определенного пользователем типа в качестве модели концепции polygon_90 , специализируйте метафункцию геометрии для этого типа.   В приведенном ниже примере CPolygon90 зарегистрирован как модель полигона_90 концепции.

template <>
struct geometry_concept { typedef polygon_90_concept type; };

Семантика многоугольника 90 заключается в том, что он может обеспечивать итераторы по координатам x и y, которые соответствуют его горизонтальным и вертикальным сторонам, начиная с координаты x. Изменяемый многоугольник 90 также должен иметь возможность устанавливать свою геометрию на основе диапазона интератора по таким координатам.   Поскольку большинство полигонов используют вершинные точки во внутренних адаптерах итератора хранения для преобразования в и из точечных последовательностей, в итераторе_points_to_compact.hpp и итераторе_compact_to_points.hpp для помощи в специализации полигона_90_traits.  A std::vector или std::list можно сделать модели полигона_90_concept, просто предоставив доступ к их итераторам через черты. Библиотечные функции, которые создают многоугольные объекты, требуют, чтобы эти объекты предоставляли конструктор по умолчанию.

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

template
struct polygon_90_traits {
     typedef typename T::coordinate_type coordinate_type;
     typename T::compact_iterator_type compact_iterator_type;
      compact_iterator_type start_compact (контакт) T&t) {
            
       compact_iterator_type end_compact T                                           
       &n

template
struct polygon_90_mutable_traits {
                              

};[ORIG_END] -->

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

view_as(polygon_90_object)

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

Functions

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

Polygon 90 Data

В библиотеке представлена модель концепции полигона 90, объявленная template polygon_90_data где T - тип координат.

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

Members

geometry_type polygon_90_concept
coordinate_type T
iterator_type Итератор над вершинами point_data вершины полигона
compact_iterator_type Итератор над неизбыточными координатами многоугольника, чередующий x, y, x, y начиная с x, где каждый x соответствует вертикальному краю и каждый y соответствует горизонтальному краю.
polygon_90_data() По умолчанию построен полигон .
polygon_90_data(const polygon_90_data& that) Копировать конструкцию
polygon_90_data& operator=(const polygon_90_data& that) Оператор назначения.
template <typename T2> 
polygon_90_data& operator=(const T2& that) const
Назначают из объекта, являющегося моделью полигона 90.
iterator_type begin() const Получите начальный итератор над вершинами многоугольника.
iterator_type end() const Получите конечный итератор поверх вершин полигона.
compact_iterator_type begin_compact() const Получите начальный компактный итератор по неизбыточным координатам полигона.
compact_iterator_type end_compact() const Получите концевой компактный итератор по неизбыточным координатам полигона.
std::size_t size() const Получить количество элементов в последовательности, хранящейся на полигоне, обычно равное числу краев полигона.
template <typename iT> 
void set(iT begin_points, iT end_points)
Устанавливает полигон в диапазон итераторов точек.   Никакая проверка не выполняется, чтобы убедиться, что точки описывают фигуру Манхэттена, каждое другое значение x и y точек используется для инициализации многоугольника.
template <typename iT> 
void set_compact(iT begin_coords, iT end_coords)
Устанавливает многоугольник в диапазон координат итератора.   Эти координаты соответствуют значениям x вертикальных краев и y значений горизонтальных краев.   Предполагается, что последовательность начинается со значения x и продолжается x, затем y, затем y.
 
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 90 Concept раздела может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

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