WYKŁAD 10: Geometria obliczeniowa. Wyznaczanie wypukłej
Transkrypt
WYKŁAD 10: Geometria obliczeniowa. Wyznaczanie wypukłej
WYKŁAD 10: Geometria obliczeniowa. Wyznaczanie wypukłej otoczki. Przedmiot badań geometrii obliczeniowej. Elementarne obiekty geometryczne i ich właściwości (punkty, odcinki, proste, figury płaskie, bryły wielowymiarowe). Problem przecinania się odcinków. Problem triangulacji wieloboku. Problem znajdowania wypukłej otoczki - algorytm Grahama - algorytm Jarvisa Wyszukiwanie zakresu Własności odcinków: 1. Czy odcinek skierowany p 0 p 1 jest położony względem p 0 p 2 zgodnie z ruchem wskazówek zegara ? p1 p2 p2 p3 2. Czy dla danych odcinków , skręcamy w prawo w punkcie p 2 ? 3. Czy odcinki p 1 p 2 , p 3 p 4 przecinają się ? Odpowiedzi w czasie O(1) za pomocą iloczynu wektorowego: p 1 p 0 p 2 p 0 det x1 x0 x2 x0 y1 y0 y2 y0 x 1 x 0 y 2 y 0 x 2 x 0 y 1 y 0 gdzie p 0 jest wektorem translacji do początku układu współrzędnych. ad.1. TAK, jeżeli wartość iloczynu p 1 p 0 p 2 p 0 dodatnia. ad.2. TAK, jeżeli wartość iloczynu p 2 p 1 p 3 p 1 dodatnia. ad.3. TAK, jeżeli ich prostokątne ograniczenia przecinają się i każdy z nich przecina prostą zawierającą drugi z nich. Wypukła otoczka zbioru punktów Algorytm Jarvisa o złożoności O(nh) 1. Wybierz punkt o minimalnej współrzędnej y, w przypadku remisów wybierz punkt z maksymalną współrzędną x. Dołącz punkt do otoczki. 2. Oblicz współrzędne biegunowe punktów względem punktu ostatnio wybranego. 3. Wybierz kolejny punkt o minimalnej współrzędnej kątowej, w przypadku remisów wybierz punkt najbardziej odległy od ostatnio wybranego. Dołącz punkt do otoczki. 4. Powtarzając kroki 2-3 wyznacz prawą składową wypukłej otoczki. 5. Wyznacz lewą składową zmnieniając kierunki obu osi i wykonując kroki 1-4. 6. Połącz obie składowe wypukłej otoczki. Literatura Cormen T.H., Leiserson C.E., Rivest R.L. : Wprowadzenie do algorytmów, WNT Warszawa, 1997 (i późniejsze wydania)