Co to są zdegenerowane wielokąty? Jak sprawdzić, czy dana para wielokątów jest zdegenerowana, czy nie?
9
Co to są zdegenerowane wielokąty? Jak sprawdzić, czy dana para wielokątów jest zdegenerowana, czy nie?
Odpowiedzi:
Wielokąt jest zdegenerowany, jeśli niektóre z jego wierzchołków leżą na sobie. np. trójkąt (0,0), (0,1), (0,0) jest zdegenerowany. Ma 3 boki i 3 wierzchołki, ale dwa z nich powtarzają się. Możliwe jest wielokrotne powtórzenie wierzchołka (na przykład (0,0), (0,0), (0,0) to kolejny zdegenerowany trójkąt). Z definicji sprawdzenie, czy wielokąt jest zdegenerowany, jest łatwe.
Ale jakie są zastosowania zdegenerowanych wielokątów? Jedna aplikacja z akceleracji graficznej (rysunek 3D) wygląda następująco:
Na rysunku 3D procesory graficzne zwykle używają triangulacji do renderowania obrazów. (Prostym) powodem używania trójkątów jest to, że są to najprostsze możliwe obiekty 2D, więc nie wymagają dużego sprzętu.
Jeśli chcemy narysować złożony obraz 3D, z powodu tego ograniczenia GPU musimy go rozłożyć na wiele trójkątów. Ale jeśli wywołamy GPU, aby renderować każdy trójkąt osobno, byłoby to bardzo wolne (z powodu liczby połączeń). Tak więc pasek trójkąta służy do zmniejszenia liczby połączeń z GPU. Dobre objaśnienie trójkątnych pasków można znaleźć w Dokumentacji Microsoft: Trójkątne paski , a także wiki dla: Trójkątne paski .
Problem pojawia się, gdy chcemy narysować dwa oddzielne obiekty w jednym pasku. W tym przypadku pomagają zdegenerowane trójkąty. GPU może wykryć zdegenerowane trójkąty i pominąć ich rysowanie. Możemy więc połączyć dwa oddzielne paski z jednym zdegenerowanym trójkątem.
Ogólnie rzecz biorąc, jeśli mamy różnych komponentów, tak że mamy już odpowiadające im trójkątne paski, możemy je narysować za pomocą tylko jednego połączenia z GPU. Powoduje to dodatkowe zużycie pamięci, ale jest to kompromis między liczbą wywołań procesora graficznego w celu renderowania a kosztem użycia dodatkowego, zdegenerowanego trójkąta.n
źródło
Zdegenerowany wielokąt to taki, który ma zerowy obszar.
źródło
Jak zauważyli inni, to zależy. Ogólnie rzecz biorąc, wielokąt nie jest zdegenerowany, jeśli nie ma żadnych anomalnych punktów, ale to tylko odsuwa problem o jeden krok wstecz; czym jest „anomalia”?
Prawdziwa odpowiedź jest taka, że wielokąt ulega degeneracji, jeśli narusza specyfikację. Nieco niegrzeczna odpowiedź jest taka, że wielokąt jest zdegenerowany, jeśli jest to przypadek krawędziowy, którego algorytm nie jest w stanie obsłużyć.
Oto przykład ze świata GIS. Specyfikacja prostych funkcji OGC zawiera bardzo dokładną definicję tego, co sprawia, że wielokąt jest „prawidłowy”. Cytując z sekcji 6.1.11.1:
źródło