SlideShare a Scribd company logo
Algorytmy geometryczne
Arkadiusz Beer
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
Punkty: p,q,r,s,a,d
Współrzędne punktu p: (x,y)
Inny zapis dla punktu p:
(X(p), Y(p))
X: p -> p.x
Y: p -> p.y
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
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
Położenie punktu
Po której stronie odcinka p-q leży punkt r?
Punkty p,q,r są współliniowe
Wyznacznik 3 punktów
det 𝑝, 𝑞, 𝑟 =
𝑋(𝑝) 𝑌(𝑝) 1
𝑋(𝑞) 𝑌(𝑞) 1
𝑋(𝑟) 𝑌(𝑟) 1
det 𝑝, 𝑞, 𝑟
> 0 𝑝𝑢𝑛𝑘𝑡 𝑟 𝑙𝑒ż𝑦 𝑝𝑜 𝒍𝒆𝒘𝒆𝒋 𝑠𝑡𝑟𝑜𝑛𝑖𝑒
𝑝𝑟𝑜𝑠𝑡𝑒𝑗 𝑝𝑞
< 0 𝑝𝑢𝑛𝑘𝑡 𝑟 𝑙𝑒ż𝑦 𝑝𝑜 𝒑𝒓𝒂𝒘𝒆𝒋 𝑠𝑡𝑟𝑜𝑛𝑖𝑒
𝑝𝑟𝑜𝑠𝑡𝑒𝑗 𝑝𝑞
= 0 𝑝𝑢𝑛𝑘𝑡𝑦 𝑝, 𝑞, 𝑟 𝑠ą 𝒘𝒔𝒑ół𝒍𝒊𝒏𝒊𝒐𝒘𝒆
Wyznacznik 3 punktów
det 𝑝, 𝑞, 𝑟 =
𝑋(𝑝) 𝑌(𝑝) 1
𝑋(𝑞) 𝑌(𝑞) 1
𝑋(𝑟) 𝑌(𝑟) 1
det 𝑝, 𝑞, 𝑟
> 0 𝑝𝑢𝑛𝑘𝑡 𝑟 𝑙𝑒ż𝑦 𝑝𝑜 𝒍𝒆𝒘𝒆𝒋 𝑠𝑡𝑟𝑜𝑛𝑖𝑒
𝑝𝑟𝑜𝑠𝑡𝑒𝑗 𝑝𝑞
< 0 𝑝𝑢𝑛𝑘𝑡 𝑟 𝑙𝑒ż𝑦 𝑝𝑜 𝒑𝒓𝒂𝒘𝒆𝒋 𝑠𝑡𝑟𝑜𝑛𝑖𝑒
𝑝𝑟𝑜𝑠𝑡𝑒𝑗 𝑝𝑞
= 0 𝑝𝑢𝑛𝑘𝑡𝑦 𝑝, 𝑞, 𝑟 𝑠ą 𝒘𝒔𝒑ół𝒍𝒊𝒏𝒊𝒐𝒘𝒆
Wyznacznik 3 punktów
Kąt ϕ jest kątem nachylenia wektora p->r do p->q
Jeżeli det 𝑝, 𝑞, 𝑟
> 0 𝑡𝑜 sin 𝜑 > 0
< 0 𝑡𝑜 sin 𝜑 < 0
= 0 𝑡𝑜 sin 𝜑 = 0
Przynależność punktu do odcinka
min 𝑋 𝑝 , 𝑋 𝑞 ≤ 𝑋 𝑟 ≤ max 𝑋 𝑝 , 𝑋 𝑞
min 𝑌 𝑝 , 𝑌 𝑞 ≤ 𝑌 𝑟 ≤ max 𝑌 𝑝 , 𝑌 𝑞
det 𝑝, 𝑞, 𝑟 = 0
Czy 2 punkty leżą po tej samej stronie?
Czy punkty a i d są po tej samej stronie prostej pq?
Czy 2 punkty leżą po tej samej stronie?
Funkcja znaku
sign(x)=
1 𝑔𝑑𝑦 𝑥 > 0
0 𝑔𝑑𝑦 𝑥 = 0
−1 𝑔𝑑𝑦 𝑥 < 0
Czy 2 punkty leżą po tej samej stronie?
𝑠𝑖𝑔𝑛 det 𝑝, 𝑞, 𝑎 = 𝑠𝑖𝑔𝑛(det 𝑝, 𝑞, 𝑑 )
Przecięcie 2 odcinków
Przecięcie 2 odcinków
𝑠𝑖𝑔𝑛(det 𝑎, 𝑑, 𝑝 ) ≠ 𝑠𝑖𝑔𝑛(det 𝑎, 𝑑, 𝑞 )
∧
𝑠𝑖𝑔𝑛(det 𝑝, 𝑞, 𝑎 ) ≠ 𝑠𝑖𝑔𝑛(det 𝑝, 𝑞, 𝑑 )
Przecięcie 2 odcinków
Przecięcie 2 odcinków
min 𝑋 𝑝 , 𝑋 𝑞 ≤ 𝑋 𝑑 ≤ max 𝑋 𝑝 , 𝑋 𝑞
min 𝑌 𝑝 , 𝑌 𝑞 ≤ 𝑌 𝑑 ≤ max 𝑌 𝑝 , 𝑌 𝑞
det 𝑝, 𝑞, 𝑑 = 0
Przecięcie 2 odcinków
min 𝑋 𝑝 , 𝑋 𝑞 ≤ 𝑋 𝑑 ≤ max 𝑋 𝑝 , 𝑋 𝑞
min 𝑌 𝑝 , 𝑌 𝑞 ≤ 𝑌 𝑑 ≤ max 𝑌 𝑝 , 𝑌 𝑞
det 𝑝, 𝑞, 𝑑 = 0
min 𝑋 𝑝 , 𝑋 𝑞 ≤ 𝑋 𝑎 ≤ max 𝑋 𝑝 , 𝑋 𝑞
min 𝑌 𝑝 , 𝑌 𝑞 ≤ 𝑌 𝑎 ≤ max 𝑌 𝑝 , 𝑌 𝑞
det 𝑝, 𝑞, 𝑎 = 0
∨
min 𝑋 𝑎 , 𝑋 𝑑 ≤ 𝑋 𝑝 ≤ max 𝑋 𝑎 , 𝑋 𝑑
det 𝑎, 𝑑, 𝑝 = 0
min 𝑌 𝑎 , 𝑌 𝑑 ≤ 𝑌 𝑝 ≤ max 𝑌 𝑎 , 𝑌 𝑑
∨
min 𝑋 𝑎 , 𝑋 𝑑 ≤ 𝑋 𝑞 ≤ max 𝑋 𝑎 , 𝑋 𝑑
det 𝑎, 𝑑, 𝑞 = 0
min 𝑌 𝑎 , 𝑌 𝑑 ≤ 𝑌 𝑞 ≤ max 𝑌 𝑎 , 𝑌 𝑑
∨
Przynależność punktu do wielokąta
𝑊𝑖𝑒𝑙𝑜𝑘ą𝑡 𝑊 𝑜 𝑁 𝑤𝑖𝑒𝑟𝑧𝑐ℎ𝑜ł𝑘𝑎𝑐ℎ
𝐶𝑧𝑦 𝑝 ∈ 𝑊 ?
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)
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
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
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
Przynależność punktu do wielokąta
Otoczka wypukła
Najmniejszy zbiór wypukły zawierający 𝑆 =
{𝑝1, 𝑝2,…, 𝑝 𝑛}
Otoczka wypukła zbioru skończonego to
wielokąt wypukły o wierzchołkach
𝑊 = {𝑝 𝑜1, 𝑝 𝑜2,…, 𝑝 𝑜𝑤}
gdzie 𝑝 𝑜𝑖 ∈ 𝑆
dla każdego 𝑖 = 1,2, . . , 𝑤
Otoczka wypukła
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)
Sortowanie zbioru punktów
Według niemalejącej wartości kąta nachylenia
do osi OX
Sortowanie zbioru punktów
Centroid zbioru punktów jest punktem o
współrzędnych:
𝑖=1
𝑛
𝑋(𝑝𝑖)
𝑛
𝑖=1
𝑛
𝑌(𝑝𝑖)
𝑛
Sortowanie zbioru punktów
Wyznaczanie wartości kąta tworzonego między badanym punktem, a osią
OX nazywamy funkcję alfa
𝑎𝑙𝑓𝑎 𝑝 =
𝑌(𝑝)
𝑑(𝑝)
𝑔𝑑𝑦 𝑋 𝑝 > 0 ∧ 𝑌 𝑝 ≥ 0
2 −
𝑌 𝑝
𝑑 𝑝
𝑔𝑑𝑦 𝑋 𝑝 ≤ 0 ∧ 𝑌 𝑝 > 0
2 +
𝑌(𝑝)
𝑑(𝑝)
𝑔𝑑𝑦 𝑋 𝑝 < 0 ∧ 𝑌 𝑝 ≤ 0
4 −
𝑌 𝑝
𝑑 𝑝
𝑔𝑑𝑦 𝑋 𝑝 ≥ 0 ∧ 𝑌 𝑝 < 0
gdzie 𝑑 𝑝 = 𝑋(𝑝) + 𝑌(𝑝)
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
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
Algorytm Grahama
Punkt p6 leży we wnętrzu trójkąta O p1 p3
Punkt p4 leży na boku trójkąta O p7 p1
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)
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
Algorytm Grahama
Algorytm Jarvisa
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
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
Algorytm Jarvisa
4. Wykonujemy kroki 2-3 przyjmując za punkt
startowy punkt g, a punkt końcowy punkt d
Algorytm Jarvisa
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)
Dziękuję
Arkadiusz Beer

More Related Content

What's hot

Foundation
FoundationFoundation
Foundation
Darshan Bavadiya
 
ANALYSIS OF CONTINUOUS BEAM USING STIFFNESS METHOD
ANALYSIS OF CONTINUOUS BEAM USING STIFFNESS METHODANALYSIS OF CONTINUOUS BEAM USING STIFFNESS METHOD
ANALYSIS OF CONTINUOUS BEAM USING STIFFNESS METHOD
kasirekha
 
Coordinate geometry fundamentals 2012
Coordinate geometry fundamentals 2012Coordinate geometry fundamentals 2012
Coordinate geometry fundamentals 2012
Taqi Zaidi
 
Surveying and scale_Surveying, Civil Engineering
Surveying and scale_Surveying, Civil EngineeringSurveying and scale_Surveying, Civil Engineering
Surveying and scale_Surveying, Civil Engineering
A Makwana
 
Lecture 6: Railway Engineering ( هندسة السكك الحديدية ) Dr. Alaa Gabr
Lecture 6: Railway Engineering ( هندسة السكك الحديدية ) Dr. Alaa GabrLecture 6: Railway Engineering ( هندسة السكك الحديدية ) Dr. Alaa Gabr
Lecture 6: Railway Engineering ( هندسة السكك الحديدية ) Dr. Alaa Gabr
Hossam Shafiq I
 
Settlement of shallow foundation
Settlement of shallow foundationSettlement of shallow foundation
Settlement of shallow foundation
Latif Hyder Wadho
 
Ce3201 l3-06
Ce3201 l3-06Ce3201 l3-06
Ce3201 l3-06
Juan Zavala
 
Analysis of vertically loaded pile foundation
Analysis of vertically loaded pile foundationAnalysis of vertically loaded pile foundation
Analysis of vertically loaded pile foundation
Monojit Mondal
 
Highway failure & their maintenance ppt
 Highway failure & their maintenance ppt Highway failure & their maintenance ppt
Highway failure & their maintenance ppt
Being Deepak
 

What's hot (9)

Foundation
FoundationFoundation
Foundation
 
ANALYSIS OF CONTINUOUS BEAM USING STIFFNESS METHOD
ANALYSIS OF CONTINUOUS BEAM USING STIFFNESS METHODANALYSIS OF CONTINUOUS BEAM USING STIFFNESS METHOD
ANALYSIS OF CONTINUOUS BEAM USING STIFFNESS METHOD
 
Coordinate geometry fundamentals 2012
Coordinate geometry fundamentals 2012Coordinate geometry fundamentals 2012
Coordinate geometry fundamentals 2012
 
Surveying and scale_Surveying, Civil Engineering
Surveying and scale_Surveying, Civil EngineeringSurveying and scale_Surveying, Civil Engineering
Surveying and scale_Surveying, Civil Engineering
 
Lecture 6: Railway Engineering ( هندسة السكك الحديدية ) Dr. Alaa Gabr
Lecture 6: Railway Engineering ( هندسة السكك الحديدية ) Dr. Alaa GabrLecture 6: Railway Engineering ( هندسة السكك الحديدية ) Dr. Alaa Gabr
Lecture 6: Railway Engineering ( هندسة السكك الحديدية ) Dr. Alaa Gabr
 
Settlement of shallow foundation
Settlement of shallow foundationSettlement of shallow foundation
Settlement of shallow foundation
 
Ce3201 l3-06
Ce3201 l3-06Ce3201 l3-06
Ce3201 l3-06
 
Analysis of vertically loaded pile foundation
Analysis of vertically loaded pile foundationAnalysis of vertically loaded pile foundation
Analysis of vertically loaded pile foundation
 
Highway failure & their maintenance ppt
 Highway failure & their maintenance ppt Highway failure & their maintenance ppt
Highway failure & their maintenance ppt
 

Viewers also liked

گزارش سمینار روش های ارزیابی معماری نرم افزار
گزارش سمینار روش های ارزیابی معماری نرم افزارگزارش سمینار روش های ارزیابی معماری نرم افزار
گزارش سمینار روش های ارزیابی معماری نرم افزار
Arash Bande Khoda
 
Ten steps to plan a presentation
Ten steps to plan a presentationTen steps to plan a presentation
Ten steps to plan a presentation
Lee Bandy
 
Profile Dynamics Info
Profile Dynamics InfoProfile Dynamics Info
Profile Dynamics Infomwilts
 
Yorks IoF - Sheffield Hallam Sept 09
Yorks IoF - Sheffield Hallam Sept 09Yorks IoF - Sheffield Hallam Sept 09
Yorks IoF - Sheffield Hallam Sept 09
Graham Richards
 
DiffCalcSecondPartialReview
DiffCalcSecondPartialReviewDiffCalcSecondPartialReview
DiffCalcSecondPartialReview
Carlos Vázquez
 
Web 2.0 , social media safety in education with Lucian
Web 2.0 , social media  safety  in  education with Lucian  Web 2.0 , social media  safety  in  education with Lucian
Web 2.0 , social media safety in education with Lucian
LucianeCurator, EUNEOS Social Media Manager and Trainer
 
Financing Solutions From PAETEC
Financing Solutions From PAETECFinancing Solutions From PAETEC
Financing Solutions From PAETEC
Tracey Gaffney
 
Guión para la Eucaristía
Guión para la EucaristíaGuión para la Eucaristía
Guión para la Eucaristía
cristinamoreubi
 
Application problems - pt 2 - Answers
Application problems - pt 2 - AnswersApplication problems - pt 2 - Answers
Application problems - pt 2 - Answers
Carlos Vázquez
 
Chapter 1
Chapter 1Chapter 1
Chapter 1
dsouther
 
P57 Novelli
P57 NovelliP57 Novelli
P57 Novelli
guest6fc2a03
 
Jive World 12 - Apps 202
Jive World 12 - Apps 202Jive World 12 - Apps 202
Jive World 12 - Apps 202
weitzelm
 
Comundus Ub 2006 2007
Comundus Ub 2006 2007Comundus Ub 2006 2007
Comundus Ub 2006 2007Shingo Hamada
 
Drawing and Illustrations
Drawing and IllustrationsDrawing and Illustrations
Drawing and Illustrations
tbmertz
 
Meet my brother
Meet my brotherMeet my brother
Meet my brother
cpremolino
 
Lolossidis Showrooms In Faliro
Lolossidis Showrooms In FaliroLolossidis Showrooms In Faliro
Lolossidis Showrooms In Faliro
glitz
 
What Is Esocial Science.Key
What Is Esocial Science.KeyWhat Is Esocial Science.Key
What Is Esocial Science.Key
ncess
 
Not just 4_astro_anymore_(webchat_animations)
Not just 4_astro_anymore_(webchat_animations)Not just 4_astro_anymore_(webchat_animations)
Not just 4_astro_anymore_(webchat_animations)
Kevin Poe
 
KMap
KMapKMap
KMap
andrewaja
 
早稲田サイコム科学と社会 プレゼン
早稲田サイコム科学と社会 プレゼン早稲田サイコム科学と社会 プレゼン
早稲田サイコム科学と社会 プレゼンShingo Hamada
 

Viewers also liked (20)

گزارش سمینار روش های ارزیابی معماری نرم افزار
گزارش سمینار روش های ارزیابی معماری نرم افزارگزارش سمینار روش های ارزیابی معماری نرم افزار
گزارش سمینار روش های ارزیابی معماری نرم افزار
 
Ten steps to plan a presentation
Ten steps to plan a presentationTen steps to plan a presentation
Ten steps to plan a presentation
 
Profile Dynamics Info
Profile Dynamics InfoProfile Dynamics Info
Profile Dynamics Info
 
Yorks IoF - Sheffield Hallam Sept 09
Yorks IoF - Sheffield Hallam Sept 09Yorks IoF - Sheffield Hallam Sept 09
Yorks IoF - Sheffield Hallam Sept 09
 
DiffCalcSecondPartialReview
DiffCalcSecondPartialReviewDiffCalcSecondPartialReview
DiffCalcSecondPartialReview
 
Web 2.0 , social media safety in education with Lucian
Web 2.0 , social media  safety  in  education with Lucian  Web 2.0 , social media  safety  in  education with Lucian
Web 2.0 , social media safety in education with Lucian
 
Financing Solutions From PAETEC
Financing Solutions From PAETECFinancing Solutions From PAETEC
Financing Solutions From PAETEC
 
Guión para la Eucaristía
Guión para la EucaristíaGuión para la Eucaristía
Guión para la Eucaristía
 
Application problems - pt 2 - Answers
Application problems - pt 2 - AnswersApplication problems - pt 2 - Answers
Application problems - pt 2 - Answers
 
Chapter 1
Chapter 1Chapter 1
Chapter 1
 
P57 Novelli
P57 NovelliP57 Novelli
P57 Novelli
 
Jive World 12 - Apps 202
Jive World 12 - Apps 202Jive World 12 - Apps 202
Jive World 12 - Apps 202
 
Comundus Ub 2006 2007
Comundus Ub 2006 2007Comundus Ub 2006 2007
Comundus Ub 2006 2007
 
Drawing and Illustrations
Drawing and IllustrationsDrawing and Illustrations
Drawing and Illustrations
 
Meet my brother
Meet my brotherMeet my brother
Meet my brother
 
Lolossidis Showrooms In Faliro
Lolossidis Showrooms In FaliroLolossidis Showrooms In Faliro
Lolossidis Showrooms In Faliro
 
What Is Esocial Science.Key
What Is Esocial Science.KeyWhat Is Esocial Science.Key
What Is Esocial Science.Key
 
Not just 4_astro_anymore_(webchat_animations)
Not just 4_astro_anymore_(webchat_animations)Not just 4_astro_anymore_(webchat_animations)
Not just 4_astro_anymore_(webchat_animations)
 
KMap
KMapKMap
KMap
 
早稲田サイコム科学と社会 プレゼン
早稲田サイコム科学と社会 プレゼン早稲田サイコム科学と社会 プレゼン
早稲田サイコム科学と社会 プレゼン
 

Similar to Algorytmy geometryczne

PZO Gimnazjum
PZO GimnazjumPZO Gimnazjum
PZO Gimnazjum
Gosia Garkowska
 
Geometria - przekształcenia
Geometria - przekształceniaGeometria - przekształcenia
Geometria - przekształcenia
knbb_mat
 
Geometria - przestrzenie afiniczne
Geometria - przestrzenie afiniczneGeometria - przestrzenie afiniczne
Geometria - przestrzenie afiniczne
knbb_mat
 
Geometria - wielościany i objętość
Geometria - wielościany i objętośćGeometria - wielościany i objętość
Geometria - wielościany i objętość
knbb_mat
 
Metody przeszukiwania przestrzeni
Metody przeszukiwania przestrzeniMetody przeszukiwania przestrzeni
Metody przeszukiwania przestrzeni
cieszak
 
Geometria - przestrzeń euklidesowa liniowa
Geometria - przestrzeń euklidesowa liniowaGeometria - przestrzeń euklidesowa liniowa
Geometria - przestrzeń euklidesowa liniowa
knbb_mat
 
Lekcja analityczna
Lekcja analitycznaLekcja analityczna
Lekcja analityczna
Jagiellonczyk
 
Prolog: niedeterminizm i korutyny
Prolog: niedeterminizm i korutynyProlog: niedeterminizm i korutyny
Prolog: niedeterminizm i korutyny
przemko
 

Similar to Algorytmy geometryczne (8)

PZO Gimnazjum
PZO GimnazjumPZO Gimnazjum
PZO Gimnazjum
 
Geometria - przekształcenia
Geometria - przekształceniaGeometria - przekształcenia
Geometria - przekształcenia
 
Geometria - przestrzenie afiniczne
Geometria - przestrzenie afiniczneGeometria - przestrzenie afiniczne
Geometria - przestrzenie afiniczne
 
Geometria - wielościany i objętość
Geometria - wielościany i objętośćGeometria - wielościany i objętość
Geometria - wielościany i objętość
 
Metody przeszukiwania przestrzeni
Metody przeszukiwania przestrzeniMetody przeszukiwania przestrzeni
Metody przeszukiwania przestrzeni
 
Geometria - przestrzeń euklidesowa liniowa
Geometria - przestrzeń euklidesowa liniowaGeometria - przestrzeń euklidesowa liniowa
Geometria - przestrzeń euklidesowa liniowa
 
Lekcja analityczna
Lekcja analitycznaLekcja analityczna
Lekcja analityczna
 
Prolog: niedeterminizm i korutyny
Prolog: niedeterminizm i korutynyProlog: niedeterminizm i korutyny
Prolog: niedeterminizm i korutyny
 

More from Arek Bee.

Pixar presentation about workplace
Pixar presentation about workplacePixar presentation about workplace
Pixar presentation about workplace
Arek Bee.
 
Are cows more likely to lie down the longer they stand? (Ig Nobel)
Are cows more likely to lie down the longer they stand? (Ig Nobel)Are cows more likely to lie down the longer they stand? (Ig Nobel)
Are cows more likely to lie down the longer they stand? (Ig Nobel)
Arek Bee.
 
Vs tools
Vs toolsVs tools
Vs tools
Arek Bee.
 
Pex
PexPex
C sharp
C sharpC sharp
C sharp
Arek Bee.
 
Scrum
ScrumScrum
Scrum
Arek Bee.
 
Jak nie zwariować z tymi pakietami
Jak nie  zwariować z tymi pakietamiJak nie  zwariować z tymi pakietami
Jak nie zwariować z tymi pakietamiArek Bee.
 

More from Arek Bee. (7)

Pixar presentation about workplace
Pixar presentation about workplacePixar presentation about workplace
Pixar presentation about workplace
 
Are cows more likely to lie down the longer they stand? (Ig Nobel)
Are cows more likely to lie down the longer they stand? (Ig Nobel)Are cows more likely to lie down the longer they stand? (Ig Nobel)
Are cows more likely to lie down the longer they stand? (Ig Nobel)
 
Vs tools
Vs toolsVs tools
Vs tools
 
Pex
PexPex
Pex
 
C sharp
C sharpC sharp
C sharp
 
Scrum
ScrumScrum
Scrum
 
Jak nie zwariować z tymi pakietami
Jak nie  zwariować z tymi pakietamiJak nie  zwariować z tymi pakietami
Jak nie zwariować z tymi pakietami
 

Algorytmy geometryczne

  • 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
  • 3. Oznaczenia Punkty: p,q,r,s,a,d Współrzędne punktu p: (x,y) Inny zapis dla punktu p: (X(p), Y(p)) X: p -> p.x Y: p -> p.y
  • 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
  • 6. Położenie punktu Po której stronie odcinka p-q leży punkt r? Punkty p,q,r są współliniowe
  • 7. Wyznacznik 3 punktów det 𝑝, 𝑞, 𝑟 = 𝑋(𝑝) 𝑌(𝑝) 1 𝑋(𝑞) 𝑌(𝑞) 1 𝑋(𝑟) 𝑌(𝑟) 1 det 𝑝, 𝑞, 𝑟 > 0 𝑝𝑢𝑛𝑘𝑡 𝑟 𝑙𝑒ż𝑦 𝑝𝑜 𝒍𝒆𝒘𝒆𝒋 𝑠𝑡𝑟𝑜𝑛𝑖𝑒 𝑝𝑟𝑜𝑠𝑡𝑒𝑗 𝑝𝑞 < 0 𝑝𝑢𝑛𝑘𝑡 𝑟 𝑙𝑒ż𝑦 𝑝𝑜 𝒑𝒓𝒂𝒘𝒆𝒋 𝑠𝑡𝑟𝑜𝑛𝑖𝑒 𝑝𝑟𝑜𝑠𝑡𝑒𝑗 𝑝𝑞 = 0 𝑝𝑢𝑛𝑘𝑡𝑦 𝑝, 𝑞, 𝑟 𝑠ą 𝒘𝒔𝒑ół𝒍𝒊𝒏𝒊𝒐𝒘𝒆
  • 8. Wyznacznik 3 punktów det 𝑝, 𝑞, 𝑟 = 𝑋(𝑝) 𝑌(𝑝) 1 𝑋(𝑞) 𝑌(𝑞) 1 𝑋(𝑟) 𝑌(𝑟) 1 det 𝑝, 𝑞, 𝑟 > 0 𝑝𝑢𝑛𝑘𝑡 𝑟 𝑙𝑒ż𝑦 𝑝𝑜 𝒍𝒆𝒘𝒆𝒋 𝑠𝑡𝑟𝑜𝑛𝑖𝑒 𝑝𝑟𝑜𝑠𝑡𝑒𝑗 𝑝𝑞 < 0 𝑝𝑢𝑛𝑘𝑡 𝑟 𝑙𝑒ż𝑦 𝑝𝑜 𝒑𝒓𝒂𝒘𝒆𝒋 𝑠𝑡𝑟𝑜𝑛𝑖𝑒 𝑝𝑟𝑜𝑠𝑡𝑒𝑗 𝑝𝑞 = 0 𝑝𝑢𝑛𝑘𝑡𝑦 𝑝, 𝑞, 𝑟 𝑠ą 𝒘𝒔𝒑ół𝒍𝒊𝒏𝒊𝒐𝒘𝒆
  • 9. Wyznacznik 3 punktów Kąt ϕ jest kątem nachylenia wektora p->r do p->q Jeżeli det 𝑝, 𝑞, 𝑟 > 0 𝑡𝑜 sin 𝜑 > 0 < 0 𝑡𝑜 sin 𝜑 < 0 = 0 𝑡𝑜 sin 𝜑 = 0
  • 10. Przynależność punktu do odcinka min 𝑋 𝑝 , 𝑋 𝑞 ≤ 𝑋 𝑟 ≤ max 𝑋 𝑝 , 𝑋 𝑞 min 𝑌 𝑝 , 𝑌 𝑞 ≤ 𝑌 𝑟 ≤ max 𝑌 𝑝 , 𝑌 𝑞 det 𝑝, 𝑞, 𝑟 = 0
  • 11. Czy 2 punkty leżą po tej samej stronie? Czy punkty a i d są po tej samej stronie prostej pq?
  • 12. Czy 2 punkty leżą po tej samej stronie? Funkcja znaku sign(x)= 1 𝑔𝑑𝑦 𝑥 > 0 0 𝑔𝑑𝑦 𝑥 = 0 −1 𝑔𝑑𝑦 𝑥 < 0
  • 13. Czy 2 punkty leżą po tej samej stronie? 𝑠𝑖𝑔𝑛 det 𝑝, 𝑞, 𝑎 = 𝑠𝑖𝑔𝑛(det 𝑝, 𝑞, 𝑑 )
  • 15. Przecięcie 2 odcinków 𝑠𝑖𝑔𝑛(det 𝑎, 𝑑, 𝑝 ) ≠ 𝑠𝑖𝑔𝑛(det 𝑎, 𝑑, 𝑞 ) ∧ 𝑠𝑖𝑔𝑛(det 𝑝, 𝑞, 𝑎 ) ≠ 𝑠𝑖𝑔𝑛(det 𝑝, 𝑞, 𝑑 )
  • 17. Przecięcie 2 odcinków min 𝑋 𝑝 , 𝑋 𝑞 ≤ 𝑋 𝑑 ≤ max 𝑋 𝑝 , 𝑋 𝑞 min 𝑌 𝑝 , 𝑌 𝑞 ≤ 𝑌 𝑑 ≤ max 𝑌 𝑝 , 𝑌 𝑞 det 𝑝, 𝑞, 𝑑 = 0
  • 18. Przecięcie 2 odcinków min 𝑋 𝑝 , 𝑋 𝑞 ≤ 𝑋 𝑑 ≤ max 𝑋 𝑝 , 𝑋 𝑞 min 𝑌 𝑝 , 𝑌 𝑞 ≤ 𝑌 𝑑 ≤ max 𝑌 𝑝 , 𝑌 𝑞 det 𝑝, 𝑞, 𝑑 = 0 min 𝑋 𝑝 , 𝑋 𝑞 ≤ 𝑋 𝑎 ≤ max 𝑋 𝑝 , 𝑋 𝑞 min 𝑌 𝑝 , 𝑌 𝑞 ≤ 𝑌 𝑎 ≤ max 𝑌 𝑝 , 𝑌 𝑞 det 𝑝, 𝑞, 𝑎 = 0 ∨ min 𝑋 𝑎 , 𝑋 𝑑 ≤ 𝑋 𝑝 ≤ max 𝑋 𝑎 , 𝑋 𝑑 det 𝑎, 𝑑, 𝑝 = 0 min 𝑌 𝑎 , 𝑌 𝑑 ≤ 𝑌 𝑝 ≤ max 𝑌 𝑎 , 𝑌 𝑑 ∨ min 𝑋 𝑎 , 𝑋 𝑑 ≤ 𝑋 𝑞 ≤ max 𝑋 𝑎 , 𝑋 𝑑 det 𝑎, 𝑑, 𝑞 = 0 min 𝑌 𝑎 , 𝑌 𝑑 ≤ 𝑌 𝑞 ≤ max 𝑌 𝑎 , 𝑌 𝑑 ∨
  • 19. Przynależność punktu do wielokąta 𝑊𝑖𝑒𝑙𝑜𝑘ą𝑡 𝑊 𝑜 𝑁 𝑤𝑖𝑒𝑟𝑧𝑐ℎ𝑜ł𝑘𝑎𝑐ℎ 𝐶𝑧𝑦 𝑝 ∈ 𝑊 ?
  • 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
  • 25. Otoczka wypukła Najmniejszy zbiór wypukły zawierający 𝑆 = {𝑝1, 𝑝2,…, 𝑝 𝑛} Otoczka wypukła zbioru skończonego to wielokąt wypukły o wierzchołkach 𝑊 = {𝑝 𝑜1, 𝑝 𝑜2,…, 𝑝 𝑜𝑤} gdzie 𝑝 𝑜𝑖 ∈ 𝑆 dla każdego 𝑖 = 1,2, . . , 𝑤
  • 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)
  • 28. Sortowanie zbioru punktów Według niemalejącej wartości kąta nachylenia do osi OX
  • 29. Sortowanie zbioru punktów Centroid zbioru punktów jest punktem o współrzędnych: 𝑖=1 𝑛 𝑋(𝑝𝑖) 𝑛 𝑖=1 𝑛 𝑌(𝑝𝑖) 𝑛
  • 30. Sortowanie zbioru punktów Wyznaczanie wartości kąta tworzonego między badanym punktem, a osią OX nazywamy funkcję alfa 𝑎𝑙𝑓𝑎 𝑝 = 𝑌(𝑝) 𝑑(𝑝) 𝑔𝑑𝑦 𝑋 𝑝 > 0 ∧ 𝑌 𝑝 ≥ 0 2 − 𝑌 𝑝 𝑑 𝑝 𝑔𝑑𝑦 𝑋 𝑝 ≤ 0 ∧ 𝑌 𝑝 > 0 2 + 𝑌(𝑝) 𝑑(𝑝) 𝑔𝑑𝑦 𝑋 𝑝 < 0 ∧ 𝑌 𝑝 ≤ 0 4 − 𝑌 𝑝 𝑑 𝑝 𝑔𝑑𝑦 𝑋 𝑝 ≥ 0 ∧ 𝑌 𝑝 < 0 gdzie 𝑑 𝑝 = 𝑋(𝑝) + 𝑌(𝑝)
  • 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
  • 34. Algorytm Grahama Punkt p6 leży we wnętrzu trójkąta O p1 p3 Punkt p4 leży na boku trójkąta O p7 p1
  • 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
  • 41. Algorytm Jarvisa 4. Wykonujemy kroki 2-3 przyjmując za punkt startowy punkt g, a punkt końcowy punkt d
  • 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)