Zastosowanie
• Grafika komputerowa(wizualizacja obiektów na
płaszczyźnie)
• Kompresja rysunków
• Wyznaczanie obszarów na mapie
• Robotyka
• Systemy wsparcia projektowania
• Wzornictwo materiałów
• Leśnictwo
• Statystyka
Oznaczenia
Prosta zawierająca punktyp i q: pq
Odcinek o początku w punkcie p i końcu w
punkcie q: p-q
Wektor o początku w punkcie p i końcu w
punkcie q: p->q
5.
Położenie punktu
Po którejstronie odcinka p-q leży punkt r?
Punkt r leży po lewej stronie
odcinka p-q
Punkt r leży po prawej stronie
odcinka p-q
Przynależność punktu dowielokąta
𝑝 ∈ 𝑊 ⇔ nieparzysta liczba przecięć prostej z punktu p
Ponieważ koszt obliczeń jest związany z N bokami i wierzchołkami
to złożoność wynosi O(n)
21.
Przynależność punktu dowielokąta
2 przypadki szczególne:
• Półprosta z punktu p zawiera bok wielokąta
• Półprosta z punktu p przechodzi przez wierzchołek wielokąta
22.
Przynależność punktu dowielokąta
Niech boki a3a4 oraz a5a6 będą bokami sąsiadującymi z a4a5, a punkty a3 i a5 będą
ich końcami.
JEŻELI punkty a3 i a6 leżą po tej samej stronie prostej z punktu p
TO liczba przecięć z bokami a3a4, a4a5 oraz a5a6 wynosi 0
WPP wynosi 1
23.
Przynależność punktu dowielokąta
Niech wierzchołek a2 należał do prostej z punktu p oraz boki a3a4 i a5a6 będą bokami
sąsiadującymi z wierzchołkiem a2, a punkty a1 i a2 będą ich końcami tych boków.
JEŻELI punkty a1 i a3 leżą po tej samej stronie prostej z punktu p
TO liczba przecięć z bokami a1a2 oraz a2a3 wynosi 0
WPP wynosi 1
Algorytm naiwny
Punkt pnie należy do otoczki jeżeli leży wewnątrz trójkąta.
Koszt sprawdzania dla N wierzchołków wyniesie
𝑁
3
, 𝑐𝑧𝑦𝑙𝑖 𝑧ł𝑜ż𝑜𝑛𝑜ść 𝑟ó𝑤𝑛𝑎 𝑂(𝑛4)
Sortowanie zbioru punktów
1.Wyznacz wartości funkcji alfa dla każdego
punktu O(n)
2. Posortuj wartości funkcji alfa w kolejności
niemalejącej O(n logn)
Algorytm Grahama
Każdy punktynie będący wierzchołkiem
otoczki wypukłej musi należeć do
wnętrza trójkąta o wierzchołkach O oraz
2 kolejne wierzchołki otoczki
Algorytm Grahama
1. Ustawiamyśrodowisko
a) Wybieramy punkty O, który jest centroidem i
określamy go jako środek układu współrzędnego
b) Wyznaczmy współrzędne punktów w nowym
układzie współrzędnych
2. Sortujemy punkty wg. wartości kąta nachylenia
wektora O-> p do osi OX, wartość funkcji alfa(p)
3. Wyznaczamy punkt S jako punkt o najmniejszej
współrzędnej y (oraz o najmniejszej
współrzędnej x)
36.
Algorytm Grahama
4. Iterujemypo wszystkich punktach zaczynając
od punktu s
a) Sprawdzamy trzy kolejne punkty 𝑝𝑖−1, 𝑝𝑖 i 𝑝𝑖+1
b) Jeżeli punkt 𝑝𝑖 leży wewnątrz trójkąta
O 𝑝𝑖−1 𝑝𝑖+1 to punkt 𝑝𝑖 zostaje usunięty z otoczki
c) Badamy kolejna trójkę punktów 𝑝𝑖, 𝑝𝑖+1 i 𝑝𝑖+2
5. Iteracje kończymy po osiągnięcia punktu s
Algorytm Jarvisa
1. Wyznaczamypunkty pomocnicze
a) Punkt d jako punkt o najmniejszej współrzędnej x
spośród wszystkich punktów o najmniejszej
współrzędnej y
b) Punkt g jako punkt o największej współrzędnej x
spośród wszystkich punktów o największej
współrzędnej y
c) Punkty d i g przypisujemy do zbioru
wierzchołków otoczki wypukłej
40.
Algorytm Jarvisa
2. Inicjalizujemybadany punkt p współrzędnymi
punktu d
3. Sprawdzamy czy punkt p nie jest punktem g
a) Wyznaczamy środek układu współrzędnych w
punkcie p
b) Szukamy punktu r o największej odległości od punktu
p śród punktów o najmniejszym kącie nachylenia
wektora wodzącego do osi pX
c) Punkt r przypisujemy do zbioru wierzchołków otoczki
wypukłej
d) Przypisując punktowi p punkt r oraz powtarzamy
krok nr 3
Najdalsza para punktów
1.Wyznaczamy otoczkę wypukłą
dla punktów O(n log n)
2. Dla każdego boku (pq) otoczki
wyznaczamy przeciwległy
punkt (r) należący do otoczki i
wyliczamy odległość punktów
początkowego i końcowego
tego boku z przeciwległym
punktem O(n)