Wyobraź sobie, że masz wielokąt 2D (a dokładniej 2D closed polygonal chain). Jak sprawdzisz, czy zawiera on samo-skrzyżowania? Może być wypukły lub wklęsły, zorientowany zgodnie lub przeciwnie do ruchu wskazówek zegara.Jak wykryć, czy wielokąt ma przekroje własne?
Teraz mogę po prostu uruchomić standardowy algorytm O(N log N)
, aby sprawdzić, czy dwa dowolne segmenty przecinają się. Uważam jednak, że ponieważ mamy jakąś dodatkową strukturę - kolejność segmentów i fakt, że każde dwa kolejne segmenty spotykają się w punktach końcowych - można opracować prostszy i szybszy (być może O(N)
?) Algorytm.
Wszelkie pomysły?