Polygon Sponsor |
Polygon 90 Set Concept Полигон_90_set concept tag -полигон_90_set_concept Семантика многоугольника_90_множества равна нулю или больше геометрических областей Манхэттена. Мотивация для обеспечения концепции многоугольника_90_set_concept заключается в том, что это очень распространенный частный случай плоской геометрии, который позволяет реализовать различные оптимизации на алгоритмах общей плоской геометрии. Обработка геометрии Манхэттена с помощью многоугольника_90_set_concept может быть в 100 раз быстрее, чем манипуляция с произвольным углом многоугольника. Поскольку преимущества производительности настолько велики, а специальный случай достаточно важен, библиотека предоставляет эти преимущества производительности для тех областей приложений, которые требуют их. Пользователям рекомендуется использовать std::vector и std::list of userdefined polygons или библиотеку polygon_90_set_dataobjects. Списки и векторы моделей полигона_90_concept или полигона_90_with_holes_concept или прямоугольника_concept автоматически являются моделями полигона_90_set_concept. OperatorsТип возврата некоторых операторов —polygon_90_set_viewТип шаблона оператора. Этот тип сам по себе является моделью концепции полигона_90_set, но, кроме того, может использоваться в качестве аргумента дляполигона_90_set_data.Конструктор и оператор присваивания. Шаблон оператора существует для устранения временных копий промежуточных результатов, когда булевы операторы связаны друг с другом. Операторы объявляются внутри пространства именboost::polygon::operators.
template
<typename T1, typename T2>
polygon_90_set_view operator|(const T1& l, const T2& r) |
Булева операция ИЛИ (полигоновое соединение). Принимает два объекта, которые моделируют полигон_90_множество или одно из его уточнений. Возвращает шаблон оператора, который выполняет операцию по требованию, когда он прикован цепью или вложен в вызов функции библиотеки, такой как назначение(). O(n log n) сложности выполнения и O(n) памяти wrt вершин + пересечений. |
template
<typename T1, typename T2>
polygon_90_set_view operator+(const T1& l, const T2& r) |
То же, что и оператор. Знак плюс также используется для операций ИЛИ в булевых логических выражениях. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T1, typename T2>
polygon_90_set_view operator&(const T1& l, const
T2& r) |
Булева и операция (пересечение полигона). Принимает два объекта, которые моделируют полигон_90_множество или одно из его уточнений. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T1, typename T2>
polygon_90_set_view operator*(const T1& l, const T2& r) |
Как оператор &. Символ умножения также используется для операций И в логических выражениях Булева. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T1, typename T2>
polygon_90_set_view operator^(const T1& l, const T2& r) |
Булева операция XOR (полигон устанавливает разъединение). Принимает два объекта, которые моделируют полигон_90_множество или одно из его уточнений. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T1, typename T2>
polygon_90_set_view operator-(const T1& l, const T2& r) |
Булева операция SUBTRACT (разница полигона). Принимает два объекта, которые моделируют полигон_90_множество или одно из его уточнений. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T1, typename T2>
T1& operator|=(const T1& l, const T2& r) |
Так же, как оператор, но с самоназначением, левый операнд должен моделировать полигон_90_множество, а не одно из его уточнений. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T1, typename T2>
T1& operator+=(T1& l, const T2& r) |
Так же, как оператор +, но с самостоятельным назначением, левый операнд должен моделировать полигон_90_множество, а не одно из его уточнений. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T1, typename T2>
T1& operator&=(const T1& l, const T2& r) |
Так же, как оператор & но с самоназначением, левый операнд должен моделировать полигон_90_set, а не одно из его уточнений. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T1, typename T2>
T1& operator*=(T1& l, const T2& r) |
Так же, как оператор*, но с самостоятельным назначением, левый операнд должен моделировать полигон_90_множество, а не одно из его уточнений. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T1, typename T2>
T1& operator^=(const T1& l, const T2& r) |
Так же, как оператор, но с самостоятельным назначением, левый операнд должен моделировать полигон_90_множество, а не одно из его уточнений. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T1, typename T2>
T1& operator-=(T1& l, const T2& r) |
Так же, как оператор, но с самостоятельным назначением, левый операнд должен моделировать полигон_90_множество, а не одно из его уточнений. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T1>
T1 operator+(const T1&, coordinate_type bloating) |
Выполняет операции с изменением размера, раздуваясь путем вздутия амплитуды. Если отрицательный результат — это усадка вместо вздутия. Примечание: возвращает результат по значению. O(n log n) сложность выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T1, typename T2>
T1 operator-(const T1&, coordinate_type shrinking) |
Выполняет операцию по изменению размера, сдуваясь путем вздутия амплитуды. Если отрицательный результат — это вздутие, а не усадка. Примечание: возвращает результат по значению. O(n log n) сложность выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T1, typename T2>
T1& operator+=(const T1&, coordinate_type bloating) |
Выполняет операции с изменением размера, раздуваясь путем вздутия амплитуды. Если отрицательный результат — это усадка вместо вздутия. Возвращает ссылку на измененный аргумент. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T1, typename T2>
T1& operator-=(const T1&, coordinate_type shrinking) |
Выполняет операции по изменению размера, сдуваясь путем вздутия амплитуды. Если отрицательный результат — это вздутие, а не усадка. Возвращает ссылку на измененный аргумент. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
Functions
template
<typename T1, typename T2>
T1& assign(T1& lvalue, const T2& rvalue) |
Устраняет перекрытия в геометрии и копии с объекта, который моделирует многоугольник_90_set или любое из его уточнений, в объект, который моделирует многоугольник_90_set. O(n log n) сложность выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T1, typename T2>
bool equivalence(const T1& lvalue, const T2& rvalue) |
Возвращается истинно, если объект, который моделирует полигон_90_множество или одно из его уточнений, охватывает точно такие же геометрические области, как и другой объект, который моделирует полигон_90_множество или одно из его уточнений. Например: два объекта polygon_90. O(n log n) сложности выполнения и O(n) памяти wrt вершин + пересечений. |
template
<typename output_container_type, typename T>
void get_rectangles(output_container_type& output,
const T& polygon_set) |
Выходной контейнер должен быть стандартным контейнером. Срезы геометрии объекта, моделирующие многоугольник_90_множество или одну из его уточнений в неперекрывающиеся прямоугольники и прикладывающие их к выходу. O(n log n) сложность среды выполнения и O(n) память wrt вершины + пересечения. |
template
<typename output_container_type, typename T>
void get_max_rectangles(output_container_type& output,
const T& polygon_set) |
Выходной контейнер должен быть стандартным контейнером. Данный объект, моделирующий полигон_90_set или один из его уточнений, находит все перекрывающиеся прямоугольники, которые являются максимальными по площади и добавляет их к выходу. Ожидаемое n log n время выполнения, худший случай квадратичного рутнима. |
template
<typename polygon_set_type>
void clear(polygon_set_type& polygon_set) |
Это делает объект пустым от геометрии. |
template
<typename polygon_set_type>
bool empty(const polygon_set_type& polygon_set) |
Проверяет, пуст ли объект в геометрии. Полигоны, которые полностью покрыты отверстиями, приведут к пустому возвращению истины. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T, typename rectangle_type>
bool extents(rectangle_type& extents_rectangle,
const T& polygon_set) |
Вычисляет ограничивающий ящик объекта, который моделирует полигон_90_множество и хранит его в объекте, который моделирует прямоугольник. Если многоугольник пустой, возвращается ложный. Если есть отверстия вне оболочек, они не способствуют протяженности многоугольного множества. O(n log n) сложности выполнения и O(n) памяти wrt вершин + пересечений. |
template
<typename T>
manhattan_area_type area(const T& polygon_set) |
Вычисляет область, покрытую геометрией, в объекте, который моделирует многоугольник_90_set. O(n log n) сложность времени выполнения и O(n) память wrt вершин + пересечений. |
template
<typename T1, typename T2>
T1& interact(T1& a, const T2& b) |
Учитывая объект, который моделирует многоугольник_90_set, и объект, который моделирует многоугольник_90_set или одно из его уточнений, модифицирует a для сохранения только областей, которые перекрывают или касаются областей в b. O(n log n) сложности выполнения и O(n) памяти wrt вершин + пересечений. |
template
<typename T>
T& self_intersect(T& polygon_set) |
Учитывая объект, который моделирует многоугольник_90_set, который имеет самоперекрывающиеся области, модифицирует аргумент, чтобы содержать только области перекрытия. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T>
T& self_xor(T& polygon_set) |
Учитывая объект, который моделирует многоугольник_90_set, который имеет самоперекрывающиеся области, модифицирует аргумент, чтобы содержать только области, которые не перекрываются. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T>
T& bloat(T& polygon_set, unsigned_area_type bloating) |
То же самое, как получить все прямоугольники, раздуть их и положить обратно. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T>
T& bloat(T& polygon_set, orientation_2d orient,
unsigned_area_type
bloating) |
То же самое, как получить все прямоугольники, раздуть их и положить обратно. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T>
T& bloat(T& polygon_set, orientation_2d orient,
unsigned_area_type
low_bloating,
unsigned_area_type
high_bloating) |
То же самое, как получить все прямоугольники, раздуть их и положить обратно. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T>
T& bloat(T& polygon_set, direction_2d dir,
unsigned_area_type
bloating) |
То же самое, как получить все прямоугольники, раздуть их и положить обратно. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T>
T& bloat(T& polygon_set,
unsigned_area_type
west_bloating,
unsigned_area_type
east_bloating,
unsigned_area_type
south_bloating,
unsigned_area_type
north_bloating) |
То же самое, как получить все прямоугольники, раздуть их и положить обратно. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T>
T& shrink(T& polygon_set, unsigned_area_type shrinking) |
То же самое, как получить все прямоугольники обратного, вздутие их и перезапись многоугольника с полученными областями, а затем отрицание. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T>
T& shrink(T& polygon_set, orientation_2d orient,
unsigned_area_type shrinking) |
То же самое, как получить все прямоугольники обратного, вздутие их и перезапись многоугольника с полученными областями, а затем отрицание. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T>
T& shrink(T& polygon_set, orientation_2d orient,
unsigned_area_type low_shrinking,
unsigned_area_type high_shrinking) |
То же самое, как получить все прямоугольники обратного, вздутие их и перезапись многоугольника с полученными областями, а затем отрицание. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T>
T& shrink(T& polygon_set, direction_2d dir,
unsigned_area_type shrinking) |
То же самое, как получить все прямоугольники обратного, вздутие их и перезапись многоугольника с полученными областями, а затем отрицание. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T>
T& shrink(T& polygon_set,
unsigned_area_type west_shrinking,
unsigned_area_type east_shrinking,
unsigned_area_type south_shrinking,
unsigned_area_type north_shrinking) |
То же самое, как получить все прямоугольники обратного, вздутие их и перезапись многоугольника с полученными областями, а затем отрицание. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T, typename coord_type>
T& resize(T& polygon_set, coord_type resizing) |
То же самое, что вздутие, если изменение размера является положительным, то же самое, что уменьшение, если изменение размера является отрицательным. |
template
<typename T, typename coord_type>
T& resize(polygon_set_type& polygon_set,
coord_type west,
coord_type east,
coord_type
south, coord_type north) |
То же самое, что вздутие, если изменение размера является положительным, то же самое, что уменьшение, если изменение размера является отрицательным. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T>
T& grow_and(T& polygon_set, unsigned_area_type bloating) |
То же самое, что вздутие непересекающихся областей, а затем применение самопересекается, чтобы сохранить только перекрытия, введенные вздутием. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T>
T& grow_and(T& polygon_set, orientation_2d orient,
unsigned_area_type bloating) |
То же самое, что вздутие непересекающихся областей, а затем применение самопересекается, чтобы сохранить только перекрытия, введенные вздутием. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T>
T& grow_and(T& polygon_set, orientation_2d orient,
unsigned_area_type low_bloating,
unsigned_area_type high_bloating) |
То же самое, что вздутие непересекающихся областей, а затем применение самопересекается, чтобы сохранить только перекрытия, введенные вздутием. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T>
T& grow_and(T& polygon_set, direction_2d dir,
unsigned_area_type bloating) |
То же самое, что вздутие непересекающихся областей, а затем применение самопересекается, чтобы сохранить только перекрытия, введенные вздутием. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T>
T& grow_and(T& polygon_set,
unsigned_area_type west_bloating,
unsigned_area_type east_bloating,
unsigned_area_type south_bloating,
unsigned_area_type north_bloating) |
То же самое, что вздутие непересекающихся областей, а затем применение самопересекается, чтобы сохранить только перекрытия, введенные вздутием. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T>
T& scale_up(T& polygon_set, unsigned_area_type factor) |
Масштабирует геометрию по неподписанному фактору. O(n log n) сложности выполнения и O(n) памяти wrt вершин + пересечений. |
template
<typename T>
T& scale_down(T& polygon_set, unsigned_area_type factor) |
Масштабирует геометрию по неподписанному фактору. O(n log n) сложность времени выполнения и O(n) память wrt вершин + пересечений. |
template
<typename T, typename scaling_type>
T& scale(polygon_set_type& polygon_set,
const
scaling_type& scaling) |
Масштабная геометрия путем применения scaling.scale() на всех вершинах. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T, typename coord_type>
T& move(T& polygon_set,
orientation_2d orient,
coord_type displacement) |
Перемещает геометрию по объему смещения в ориентации. O(n log n) сложность среды выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T, typename coord_type>
T& move(T& polygon_set, coord_type x_displacement,
coord_type y_displacement) |
Перемещает геометрию по x_dispacement в x и y_displacement в y. Примечание: для консистенции должно быть convolve(polygon_set, point). O(n log n) runtime complexity и O(n) memory wrt vertices + intersections. |
template
<typename T, typename transformation_type>
T& transform(T& polygon_set,
const transformation_type& transformation) |
Применяет transformation.transform() на всех вершинах. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename T>
T& keep(T& polygon_set,
unsigned_area_type min_area,
unsigned_area_type max_area,
unsigned_area_type min_width,
unsigned_area_type max_width,
unsigned_area_type
min_height,
unsigned_area_type
max_height) |
Сохраняет только области, удовлетворяющие критериям min/max в списке аргументов. Примечание: полезно для визуализации, чтобы отсеять слишком маленькие многоугольники. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
Polygon 90 Set Data Object Тип набора данных полигона 90 инкапсулирует внутренний формат данных, который служит вводом в алгоритм линии развертки, который реализует булевые операции с полигонной щелчкой. Он также отслеживает, были ли эти данные отсортированы или отсканированы, и сохраняет инвариант, который, когда его флаги указывают, что данные отсортированы или отсканированы, данные не были изменены, чтобы нарушить это предположение. Прямое использование типа набора данных Polygon 90 может быть более эффективным, чем использование списков и векторов многоугольников в вышеперечисленных функциях из-за инвариантов, которые он может применять, которые обеспечивают возможность поддерживать сортированную форму данных, а не выходить на многоугольники, а затем прибегать к этим вершинам для последующей операции. Объявление Polygon 90 Set Data: шаблон класс polygon_90_set_data; Класс параметризуется по типу координатных данных. Алгоритмы, которые извлекают выгоду из знаний об инвариантах, применяемых классом, реализуются в качестве функций-членов, чтобы предоставить им доступ к информации об этих инвариантах. Member Functions
polygon_90_set_data() |
Default constructor. Сканирование ориентации по умолчанию |
polygon_90_set_data(orientation_2d
orient) |
Конструкция со сканирующей ориентацией. |
template
<typename iT>
polygon_90_set_data(orientation_2d orient,
iT input_begin, iT input_end) |
Конструкция со сканирующей ориентацией из диапазона итераторов вставляемых объектов. |
polygon_90_set_data(const
polygon_90_set_data& that) |
Копировать конструкцию. |
template
<typename l, typename r, typename op>
polygon_90_set_data(const
polygon_90_set_view<l,r,op>& t) |
Копировать конструкцию из шаблона булевого оператора. |
polygon_90_set_data(orientation_2d orient,
const polygon_90_set_data& that) |
Конструкция со сканирующей ориентацией и копированием из другого многоугольника. |
polygon_90_set_data&
operator=(const polygon_90_set_data& that) |
Назначение из другого набора многоугольников может изменить ориентацию сканирования. |
template
<typename l, typename r, typename op>
polygon_90_set_data&
operator=(const polygon_90_set_view<l, r,
op>& that) |
Назначение от шаблона булевого оператора. |
template
<typename geometry_object>
polygon_90_set_data& operator=(const geometry_object&
geo) |
Назначение от вставляемого объекта. |
template <typename iT>
void insert(iT input_begin, iT input_end) |
Вставьте объекты итераторного диапазона. Линейный ворт. вставленные вершины. |
void insert(const polygon_90_set_data& polygon_set) |
Вставьте набор многоугольников. Линейный ворт. вставленные вершины. |
template <typename geometry_type>
void insert(const geometry_type& geometry_object,
bool
is_hole = false) |
Вставьте объект геометрии, если это_дыра, то вставленная область является субтрактивной, а не аддитивной. Линейный ворт. вставленные вершины. |
template
<typename output_container>
void get(output_container& output) const |
Ожидает стандартный контейнер геометрических объектов. Будет сканировать и устранять перекрытия. Преобразует геометрию многоугольника в объекты такого типа и добавляет их в контейнер. Полигоны будут выведены с обмоткой против часовой стрелки, дырочные полигоны будут выведены с обмоткой по часовой стрелке. Последняя вершина выходного многоугольника не является дубликатом первой, а число точек равно числу краев. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template
<typename output_container>
void get(output_container& output, size_t k) const |
Expects a standard
container of geometry objects. Will scan and eliminate
overlaps. Converts polygon set geometry to objects of that type
and appends them to the container. The resulting polygons will
have at most k vertices. For Manhattan data k should be at least 4 .
Polygons will be output with counterclockwise winding, hole polygons
will be output with clockwise winding. The last vertex of an
output polygon is not the duplicate of the first, and the number of
points is equal to the number of edges. O( n log n) runtime
complexity and O(n) memory wrt vertices + intersections.
|
template
<typename output_container>
void get_polygons(output_container& output) const |
Ожидает стандартный контейнер из полигонных объектов. Будет сканировать и устранять перекрытия. Преобразует геометрию многоугольника в многоугольники и добавляет их к контейнеру. Полигоны будут иметь отверстия, разбитые до внешней границы вдоль положительного направления ориентации линии сканирования множества полигонов. O(n log n) сложности выполнения и O(n) памяти wrt вершин + пересечений. |
template
<typename output_container>
void get_rectangles(output_container& output) const |
Ожидает стандартный контейнер прямоугольных объектов. Будет сканировать и устранять перекрытия. Срезы многоугольника устанавливают геометрию прямоугольников вдоль ориентации сканирования и прикрепляют их к контейнеру. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
template <typename output_container>
void get_rectangles(output_container& output,
orientation_2d slicing_orientation) const |
Ожидает стандартный контейнер прямоугольных объектов. Будет сканировать и устранять перекрытия. Срезы многоугольника задают геометрию прямоугольникам вдоль заданной ориентации и прикрепляют их к контейнеру. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
bool operator==(const polygon_90_set_data& p) const |
После сканирования данные представления геометрии внутри многоугольного множества находятся в математически канонической форме. Сравнение между двумя множествами является линейной операцией времени, когда они находятся в сканируемом состоянии. Будет сканировать и устранять перекрытия в обоих наборах многоугольников. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения в первый раз, линейные впоследствии. |
bool operator!=(const
polygon_90_set_data& p) const |
Обратная логика оператора эквивалентности. |
void clear() |
Сделайте полигон пустым. Примечание: не удаляет память. Используйте сокращение, чтобы соответствовать идиоме и назначить по умолчанию построенный многоугольник для де-распределения. |
bool empty()
const |
Проверьте, не содержит ли многоугольник геометрии. Будет сканировать и устранять перекрытия, потому что субтрактивные области могут сделать многоугольник пустым. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения в первый раз, линейные впоследствии. |
orientation_2d orient()
const |
Получите ориентацию сканирования. В зависимости от данных иногда более эффективно сканировать в определенной ориентации. Особенно это касается геометрии Манхэттена. Постоянное время. |
void clean()
const |
Сканирование и устранение перекрытий. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения первый раз, постоянное время впоследствии. |
template
<typename input_iterator_type>
void set(input_iterator_type input_begin,
input_iterator_type
input_end,
orientation_2d orient)
|
Перезаписывающая геометрия в многоугольном наборе с вставляемыми объектами в диапазоне итераторов. Также устанавливается ориентация сканирования на указанный. |
template
<typename rectangle_type>
bool extents(rectangle_type& extents_rectangle) const |
Учитывая объект, который моделирует прямоугольник, сканирует и устраняет перекрытия в многоугольном множестве, потому что субтрактивные области могут изменять его протяженности, затем вычисляет ограничивающий ящик и присваивает его протяженности_прямоуголь. O(n log n) сложность выполнения и O(n) память wrt вершины + пересечения с первого раза, линейные впоследствии. |
polygon_90_set_data&
bloat(unsigned_area_type west_bloating,
unsigned_area_type east_bloating,
unsigned_area_type south_bloating,
unsigned_area_type north_bloating) |
Сканирование для устранения перекрытий и субтрактивных областей. Вставляет прямоугольники ширины, указанные значениями вздутия на указанную сторону геометрии в пределах набора многоугольников, и заполняет углы прямоугольниками длины и ширины, указанными для смежных сторон. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
polygon_90_set_data&
shrink(unsigned_area_type west_shrinking,
unsigned_area_type east_shrinking,
unsigned_area_type south_shrinking,
unsigned_area_type north_shrinking) |
Сканирование для устранения перекрытий и субтрактивных областей. Вставляет субтрактивные прямоугольники ширины, указанные значениями вздутия на указанную сторону геометрии в пределах набора многоугольников и субтрактивного прямоугольника в выпуклых углах длины и ширины, указанных для смежных сторон. Сканирование для устранения перекрывающихся субтрактивных областей. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
polygon_90_set_data&
resize(coordinate_type west, coordinate_type east,
coordinate_type south,
coordinate_type north) |
Вызовите раздувание или усадку, а затем раздувание в зависимости от того, являются ли значения изменения размера положительными или отрицательными. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
polygon_90_set_data&
move(coordinate_type x_delta,
coordinate_type y_delta) |
Добавьте x_delta к значениям x и y_delta к значениям y вершин, хранящихся в наборе многоугольников. Линейные вершины. |
template
<typename transformation_type>
polygon_90_set_data&
transform(const transformation_type&
transformation) |
Применяет transformation.transform() на вершинах, хранящихся в многоугольном наборе. Linear wrt. vertices. |
polygon_90_set_data&
scale_up(unsigned_area_type factor) |
Масштабные вершины, хранящиеся внутри полигона, устанавливаются по фактору. Линейные вершины. |
polygon_90_set_data&scale_down(фактор неподписанного_area_type)
|
Масштабные вершины, хранящиеся в полигоне, устанавливаются по фактору. Линейные вершины. |
template
<typename scaling_type>
polygon_90_set_data&
scale(const
anisotropic_scale_factor<scaling_type>& f) |
Масштабные вершины, хранящиеся в полигоне, устанавливаются путем применения f.scale(). Линейные вершины. |
polygon_90_set_data&
scale(double factor) |
Масштабные вершины, хранящиеся в полигоне, задаются коэффициентом плавающей точки. Линейные вершины. |
polygon_90_set_data&
self_xor() |
Сохраняйте только непересекающиеся области геометрии в многоугольном множестве. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
polygon_90_set_data&
self_intersect() |
Сохраняйте только перекрывающиеся области геометрии в пределах набора многоугольников. O(n log n) сложность времени выполнения и O(n) память wrt вершин + пересечений. |
polygon_90_set_data&
interact(const polygon_90_set_data& that) |
Сохраняйте только те области, которые касаются или перекрывают области в споре. O(n log n) сложность времени выполнения и O(n) память wrt вершины + пересечения. |
|