2. 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
4. Oznaczenia
Prosta zawierająca punkty p 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órej stronie 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
20. Przynależność punktu do wieloką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 do wieloką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 do wieloką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 do wieloką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
27. Algorytm naiwny
Punkt p nie należy do otoczki jeżeli leży wewnątrz trójkąta.
Koszt sprawdzania dla N wierzchołków wyniesie
𝑁
3
, 𝑐𝑧𝑦𝑙𝑖 𝑧ł𝑜ż𝑜𝑛𝑜ść 𝑟ó𝑤𝑛𝑎 𝑂(𝑛4)
31. 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)
33. Algorytm Grahama
Każdy punkty nie 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
35. 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. Iterujemy po 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
39. Algorytm Jarvisa
1. Wyznaczamy punkty 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. Inicjalizujemy badany 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
43. 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)