Что такое вырожденные полигоны? Как проверить, является ли данная пара полигонов вырожденной или нет?
Что такое вырожденные полигоны? Как проверить, является ли данная пара полигонов вырожденной или нет?
Ответы:
Многоугольник вырожден, если некоторые его вершины лежат друг на друге. например, треугольник (0,0), (0,1), (0,0) вырожден. Он имеет 3 стороны и 3 вершины, но две вершины повторяются. Можно повторить вершину несколько раз (например, (0,0), (0,0), (0,0) - другой вырожденный треугольник). По определению проверить, является ли многоугольник вырожденным или нет, легко.
Но каковы вырожденные полигоны? Одно из приложений с графическим ускорением (3D рисование) выглядит следующим образом:
В 3D-графике графические процессоры обычно используют триангуляцию для рендеринга изображений. (Простая) причина использования треугольников в том, что они являются простейшими 2D объектами, поэтому не требуют большого количества оборудования.
Если мы хотим нарисовать сложное трехмерное изображение, из-за этого ограничения GPU, мы должны разложить его на несколько треугольников. Но если мы вызовем графический процессор для визуализации каждого треугольника по отдельности, это будет очень медленно (из-за количества вызовов). Таким образом, треугольная полоса используется для уменьшения количества обращений к графическому процессору. Хорошее объяснение полос треугольника можно найти в документации Microsoft: полосы треугольника , также вы можете увидеть вики для: полосы треугольника .
Но проблема возникает, когда мы хотим нарисовать два отдельных объекта в одной полосе. В этом случае помогают вырожденные треугольники. Графический процессор может обнаружить вырожденные треугольники и пропустить их рисунок. Таким образом, мы можем соединить две отдельные полосы одним вырожденным треугольником.
Вырожденный многоугольник - это тот, который имеет нулевую площадь.
Как отметили другие, это зависит. Вообще говоря, многоугольник невырожден, если у него нет аномальных точек, но это только отталкивает проблему на один шаг назад; что такое "аномальный"?
Реальный ответ заключается в том, что многоугольник вырожден, если он нарушает спецификацию. Немного грубый ответ заключается в том, что многоугольник вырожден, если это крайний случай, который ваш алгоритм не может обработать.
Вот пример из мира ГИС. Спецификация простых функций OGC содержит очень точное определение того, что делает полигон «допустимым». Цитата из раздела 6.1.11.1:
Утверждения для полигонов (правила, которые определяют допустимые полигоны) следующие:
а) полигоны топологически замкнуты;
б) Граница многоугольника состоит из набора линейных колец, которые составляют его внешние и внутренние границы;
c) Никакие два кольца на пересечении границы и кольца на границе многоугольника не могут пересекаться в точке, но только как касательная, например
Примечание. Последнее условие говорит о том, что в точке, общей для двух кривых, соседние точки не могут быть общими. Это заставляет каждую общую точку быть точкой касания.
e) Внутренность каждого многоугольника является множеством связных точек;
f) Внешность многоугольника с одним или несколькими отверстиями не связана. Каждое отверстие определяет связанный компонент экстерьера.
В приведенных выше утверждениях интерьер, замыкание и экстерьер имеют стандартные топологические определения. Комбинация (a) и (c) делает Polygon регулярным замкнутым множеством точек.