Що таке вироджені багатокутники?


9

Що таке вироджені багатокутники? Як перевірити, чи є певна пара багатокутників вироджена чи ні?


2
Контекст? Я не вірю, що "вироджений багатокутник" має стандартне визначення.
Пітер Шор

Якщо у мене є два опуклі багатокутники, як би вироджувалося? якщо вони мають спільну сторону або якщо вони перетинаються? чи ні? або обидва?
Аліса

1
Я здогадуюсь, що це багатокутники, у яких дві сусідні вершини однакові.
Yuval Filmus

Відповіді:


9

Полігон вироджується, якщо деякі його вершини лежать одна на одній. наприклад, трикутник (0,0), (0,1), (0,0) вироджений. Він має 3 сторони і 3 вершини, але дві вершини повторюються. Можна повторити вершину кілька разів (наприклад (0,0), (0,0), (0,0) - ще один вироджений трикутник). За визначенням перевірити, чи є багатокутник виродженим чи ні, непросто.

Але для чого використовують вироджені багатокутники? Одне застосування із графічного прискорення (3D-малювання) полягає в наступному:

У 3D-графічних графічних процесорах звичайно використовують тріангуляцію для візуалізації зображень. (Проста) причина використання трикутників полягає в тому, що вони є найпростішими можливими 2D об'єктами, тому не потрібно багато обладнання.

Якщо ми хочемо намалювати складне 3D-зображення, за цим обмеженням GPU нам доведеться розкласти його на кілька трикутників. Але якщо ми зателефонуємо GPU, щоб відображати кожен трикутник окремо, це буде дуже повільно (через кількість дзвінків). Так трикутна смужка використовується для зменшення кількості дзвінків до GPU. Хороше пояснення трикутних смуг можна знайти в документації Microsoft: «Трикутні смужки» , також ви можете побачити вікі для: « Трикутник» .

Але проблема виникає, коли ми хочемо намалювати два окремих об’єкти однією смужкою. У цьому випадку допомагають вироджені трикутники. GPU може виявити вироджені трикутники і пропустити їх малюнок. Тож ми можемо з'єднати дві окремі смуги з одним виродженим трикутником.

Загалом, якщо у нас є нрізні компоненти, такі, що у нас вже є відповідні смуги трикутника, ми можемо намалювати їх усі лише одним викликом до GPU. Це спричиняє додаткове використання пам’яті, але це компроміс між кількістю викликів до GPU для візуалізації та накладними витратами на використання додаткового виродженого трикутника.


1
Чи можете ви уточнити, якщо вироджене означає лише сусідні рівні вершини, або якщо визначення включає не сусідні рівні вершини? (Щире запитання - не просто намагаючись покращити відповідь)
Ерік Германсен

0

Вироджений багатокутник - це той, що має нульову площу.


Якщо відповідь user742 правильна, це не відповідає дійсності. Візьміть квадрат. Якщо дві і лише дві вершини однакові, то це трикутник і, таким чином, площа дорівнює> 0.
HankCa

і ти це добре прояснив. трикутник не вироджений.
Габріель Рохведер

0

Як зазначали інші, це залежить. Взагалі, багатокутник не вироджується, якщо він не має аномальних точок, але це просто відсуває проблему назад на один крок; що таке "аномальне"?

Справжня відповідь полягає в тому, що багатокутник вироджується, якщо він порушує специфікацію. Трохи груба відповідь полягає в тому, що багатокутник вироджується, якщо це крайній випадок, з яким ваш алгоритм не може впоратися.

Ось приклад зі світу ГІС. Специфікація простих функцій OGC має дуже ретельне визначення того, що робить полігон "дійсним". Цитуючи з розділу 6.1.11.1:

Твердження для полігонів (правила, що визначають дійсні багатокутники) наступні:

а) Полігони топологічно закриті;

б) межа полігону складається з набору лінійних кілець, що складають його зовнішні та внутрішні межі;

в) Жодні два Кільця в межовому хресті та Кільця в межі Полігона не можуть перетинатися в точці, але лише як дотична, наприклад

ППолігон,c1,c2П.Браниця,c1c2,p,qТочка,p,qc1,pq,[pc2][δ>0|[|p-q|<δ] [qc2]]
;

Примітка. Остання умова говорить про те, що в точці, спільній для двох кривих, точки поблизу не можуть бути загальними. Це змушує кожну спільну точку бути точкою дотику.

г) Полігон може не мати ліній зрізу, шипів або проколів, наприклад: ППолігон,П=P.Interior.Закриття;

д) Інтер'єр кожного багатокутника - це з'єднаний набір точок;

f) Зовнішня частина багатокутника з 1 або більше отворами не з'єднана. Кожен отвір визначає з'єднаний компонент зовнішності.

У вищезазначених твердженнях інтер'єр, закриття та зовнішній вигляд мають стандартні топологічні визначення. Поєднання (a) і (c) робить багатокутник регулярним набором закритих точок.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.