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

Boost Polygon Library: Polygon 45 Concept

Boost , ,


Polygon 45 Concept

Тег концепта polygon_45 —polygon_45_concept

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

шаблон<>
структурная геометрия_concept{ typedef polygon_45_concept type; };

Семантика многоугольника_45 заключается в том, что он может обеспечивать итераторы над точками, представляющими его вершины, углы, образующиеся, поскольку эти вершины должны быть кратны 45-градусной относительно оси координат.   Допустимо, чтобы последний край пояснялся с первой и последней точкой, равными друг другу, или подразумевался этой осадкой, которая соединила бы первую и последнюю точку. Изменяемый многоугольник 45 также должен иметь возможность устанавливать свою геометрию на основе диапазона интератора над такими точками.    A std::vector>или std::list>можно сделать моделями полигона_45_concept, просто предоставив доступ к их итераторам через черты. Библиотечные функции, которые создают многоугольные объекты, требуют, чтобы эти объекты предоставляли конструктор по умолчанию.

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

template
struct polygon_traits {};

template
struct polygon_traits  typename gtl_or_4<
   typename geometry_concept::type, polygon_concept>::type,
    gtl_same_type< geometry_concept::type, polygon_45_concept>::type,
    gtl_same_type< geometry_concept::type, polygon_with_holes_concept>::type,
    gtl_same_type< Геометрия_concept::type, polygon_45_with_holes_concept>::type
  >::type>{
       T::coordinate_type coordinate_type;
     T::iterator_type iterator_type;
    type start_points
           type end_points
              ;   ;            &n

template
struct polygon_mutable_traits {
                                           &

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

view_as(polygon_45_object)
view_as(polygon_45_object)

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

Functions

template <typename T>
point_iterator_type begin_points(const T& polygon)
Ожидает модель полигона_45.  Возвращает начальный итератор по диапазону точек, которые соответствуют вершинам многоугольника.
template <typename T>
point_iterator_type end_points(const T& polygon)
Ожидает модель полигона_45.  Возвращает конечный итератор по диапазону точек, которые соответствуют вершинам многоугольника.
template <typename T, typename iterator>
void set_points(T& polygon, iterator b, iterator e)
Ожидает модель полигона_45.   Устанавливает полигон в точечный диапазон данных [b,e], который соответствует вершинам полигона.   Не45 ребер между последовательными входными точками не допускается.
template <typename T>
unsigned int size(const T& polygon)
Возвращает число краев в многоугольнике.
template <typename T1, typename T2>
T1& assign(T1& left, const T2& right)
Скопирует данные с правого объекта, который моделирует полигон_45, в левый объект, который моделирует полигон_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>
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_distance 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.  Линейные вершины wrt.
template <typename polygon_type, typename point_type>
polygon_type& convolve(polygon_type& polygon,
                       const point_type& point)
Сочетает координатные значения точки с вершинами объекта, моделирующего полигон_45.  Линейные вершины wrt.

Polygon 45 Data

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

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

Members

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




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



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


реклама


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

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