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

Polygon Concept

Boost , Chapter 1. Geometry , Concepts

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext
Description

Концепция полигона описывает требования к типу полигона. Алгоритмы в Boost. Геометрия будет проверять любые аргументы геометрии против требований концепции.

ПолигонПолигон представляет собой плоскую поверхность, определенную одной внешней границей и нулевой или более внутренней границей.(Простая спецификация OGC)).

Итак, определение увеличения. Геометрический полигон немного отличается от, например. Вики, где у полигона нет дырок. Полигон Роста. Геометрия — это многоугольник с отверстиями или без них.(Полигон без отверстий — этовспомогательная геометриявнутри Boost. Геометрия и называется кольцом.

Concept Definition

Концепция полигона определяется следующим образом:

  • должна быть специализация<traits::tag>, определяющая<polygon_tag>как тип
  • должна быть специализация<traits::ring_type>, определяющая тип его внешнего кольца и внутренних колец как тип
  • Этот тип, определенный<ring_type>, должен соответствоватьконцепции кольца.
  • Должна быть специализация<traits::interior_type>, определяющая тип коллекции его внутренних колец как тип; эта коллекция сама должна выполнять буст. Концепт Range Random Access Range
  • должна быть специализация<traits::exterior_ring>с двумя функциями, названными<get>, возвращающими внешнее кольцо, одна из которых является const, другая - non const.
  • должна быть специализация<traits::interior_rings>с двумя функциями, названными<get>, возвращающими внутренние кольца, одно из которых является const, другое - non const.
Rules

Помимо Концепций, которые являются проверками на время компиляции, существуют и другие правила, которые должны выполняться действующими многоугольниками. Это следует правилам opengeospatial (см. ссылку выше).

  • Полигоны — простые геометрические объекты (см. такжевики, но в Boost допускаются отверстия). Геометрические полигоны.
  • Если полигоны, лежащие в основе<ring_type>, определены по часовой стрелке, внешнее кольцо должно иметь ориентацию по часовой стрелке, и любое внутреннее кольцо должно быть обращено в обратную сторону по заданной ориентации (так: против часовой стрелки для внешних колец по часовой стрелке). Если<ring_type>определено против часовой стрелки, это наоборот.
  • Если полигоны, лежащие в основе<ring_type>, определены как замкнутые, все кольца должны быть закрыты: первая точка должна быть пространственно равна последней точке.
  • Интерьер представляет собой соединенную точку.
  • Не должно быть самопересечений, но допускаются самосопряжения (между внешними/внутренними кольцами) (до тех пор, пока внутренняя часть является соединенной точкой).
  • Не должно быть обрезанных линий, шипов или проколов.
  • Внутренние кольца должны быть расположены внутри внешнего кольца. Внутренние кольца могут не располагаться внутри друг друга.

Алгоритмы, такие как пересечение, область, центроид, союз и т. д., не проверяют валидность. Там будет алгоритм is_valid, который проверяет на валидность против этих правил, во время выполнения, и который может быть вызван (пользователем библиотеки) раньше.

Если вход недействителен, выход также может быть недействительным. Например: если полигон, который должен быть закрыт, не закрыт, область будет неправильной.

Available Models
  • полигон
  • a Boost.Polygon polygon_with_holes_data (требуется<#include boost/geometry/geometries/adapted/boost_polygon/polygon.hpp>>)

PrevUpHomeNext

Статья Polygon Concept раздела Chapter 1. Geometry Concepts может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

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