Polygon Sponsor |
Polygon 90 With Holes Concept Полигон_90_с_дырами - многоугольник_90_с_дыр_концепт Чтобы зарегистрировать тип, определенный пользователем, как модель polygon_90_with_holes concept, специализируйтесь на мета-функции геометрической концепции для этого типа. В примере ниже CPolygon90WithHoles зарегистрирована как модель полигона_90_with_holes концепция. Template <> struct geo_concept { typedef polygon_90_with_holes_concept type; Семантика многоугольника_90_с_дырей - это многоугольник_90, который может обеспечить итераторы над отверстиями, которые также являются многоугольными_90. Мягкий многоугольник_90_с_дырами также должен быть в состоянии установить свою геометрию на основе диапазона интераторов над многоугольными_90 отверстиями. В библиотеке нет конвенции об извержении отверстий. Белоу показан по умолчанию полигон с признаками отверстий. Специализация этих признаков требуется для типов, которые не соответствуют поведению по умолчанию. 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_90_with_holes_concept, может рассматриваться как модель любого из его усовершенствований, если он определяется на время выполнения, чтобы соответствовать ограничению этих понятий. Эта концепция литья осуществляется через функцию view_as<>(). view_as(polygon_90_with_holes_object) view_as<polygon_90_concept>(polygon_90_with_holes_object)[ORIG_END] --> Значение возврата 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) |
Expects a model of polygon_90_with_holes. Возвращает начальный итератор по диапазону точек, соответствующих вершинам полигона. |
template
<typename T>
point_iterator_type end_points(const T& polygon) |
Expects a model of polygon_90_with_holes. Возвращает конечный итератор по диапазону точек, соответствующих вершинам полигона. |
template
<typename T>
hole_iterator_type begin_holes(const T& polygon) |
Expects a model of polygon_90_with_holes. Возвращает начальный итератор по диапазону координат, соответствующих горизонтальным и вертикальным краям. |
template
<typename T>
hole_iterator_type end_holes(const T& polygon) |
Expects a model of polygon_90_with_holes. Возвращает конечный итератор по диапазону координат, соответствующих горизонтальным и вертикальным краям. |
template
<typename T, typename iterator>
void set_compact(T& polygon, iterator b, iterator e) |
Expects a model of polygon_90_with_holes. Настраивает полигон на диапазон координат данных [b,e), соответствующий .horizontal и вертикальным краям. |
template
<typename T, typename iterator>
void set_points(T& polygon, iterator b, iterator e) |
Expects a model of polygon_90_with_holes. Устанавливает многоугольник до диапазона точечных данных [b,e), который соответствует вершинам манхаттана. Неманхаттановые края между последовательно входными точками приводят к неопределенному поведению. |
template
<typename T, typename iterator>
void set_holes(T& polygon, iterator b, iterator e) |
Expects a model of polygon_90_with_holes. Набор многоугольных отверстий для диапазона данных отверстия [b,e] |
template
<typename T>
unsigned int size(const T& polygon) |
Восстановляет количество ребер во внешней оболочке многоугольника_90_с_дырей. Не включает в себя размеры отверстий. |
template
<typename T1, typename T2>
T1& assign(T1& left, const T2& right) |
Копирует данные с правого объекта, который моделирует многоугольник_90_с_луки или один из его усовершенствований на левый объект, который моделирует polygon_90_with_holes. |
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) |
Description КЛОККВИЗА, 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. |
template
<typename polygon_type, typename point_type>
polygon_type& convolve(polygon_type& polygon,
const point_type& point) |
Содержит координатные значения точки с внешней оболочкой и отверстиями объекта, который моделирует многоугольник_90_с_луками. |
Polygon 90 With Holes Data Библиотека предоставляет модель многоугольника 90 с концепцией отверстий, заявленной template polygon_90_with_holes_data где T - это тип координат. Этот тип данных используется внутри, когда необходим хэттенский многоугольник с отверстиями и доступен для пользователя библиотеки, который считает удобным использовать тип данных многоугольника библиотеки вместо того, чтобы предоставлять свои собственные. Тип данных реализован, чтобы быть удобным в использовании с библиотечными чертами. Members
geometry_type |
polygon_90_with_holes_concept |
coordinate_type |
T |
iterator_type |
Итератор над вершинами point_data вершинами полигона |
compact_iterator_type |
Установщик над нередундантными координатами полигона, чередуя x, y, x, начиная с x, где каждый x соответствует вертикальному краю и каждый y соответствует горизонтальному краю. |
iterator_holes_type |
Установщик над многоугольниками типа polygon_90_data. |
polygon_90_with_holes_data() |
Создание хранилища полигон. |
polygon_90_with_holes_data(const
polygon_90_with_holes_data& that) |
Конструкция |
polygon_90_with_holes_data&
operator=(const polygon_90_with_holes_data& that) |
Оператор назначения. |
template
<typename T2> polygon_90_with_holes_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 |
Получить конечную компактную итератору над неисчерпаемыми координатами полигона. |
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) |
Настраивает полигон на итераторный диапазон точек. Никакой проверки не проводится для того, чтобы точки описывали фигуру Манхэттена, для инициализации полигона используется любое другое значение x и y. |
template
<typename iT>
void set_compact(iT begin_coords, iT end_coords) |
Настраивает полигон на итераторный диапазон координат. Эти координаты соответствуют значениям х вертикальных краев и значениям y горизонтальных краев. Ожидается, что последовательность начинается с x-значения и переходит x затем y x затем y. |
template
<typename iT>
void set_holes(iT begin_holes, iT end_choless) |
Устанавливает многоугольные отверстия итератора полигона. Эти многоугольники в диапазоне входных данных могут быть либо многоугольными_90_данными, либо многоугольными_90_с_луками_данными, либо любым типом, предоставляющим функции start_compact и end_compact. |
|