SlideShare a Scribd company logo
1 of 44
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

El principio divino texto oficial a color
El principio divino   texto oficial a colorEl principio divino   texto oficial a color
El principio divino texto oficial a colorJuan Pique
 
3D Transformation
3D Transformation3D Transformation
3D TransformationSwatiHans10
 
Change of order in integration
Change of order in integrationChange of order in integration
Change of order in integrationShubham Sojitra
 
Esdei 01.01 parte i_2016
Esdei 01.01 parte i_2016Esdei 01.01 parte i_2016
Esdei 01.01 parte i_2016Denise Aguiar
 
Applied Quantum Mechanics_part 2.pdf
Applied Quantum Mechanics_part 2.pdfApplied Quantum Mechanics_part 2.pdf
Applied Quantum Mechanics_part 2.pdfDr Biplab Bag
 
2D Transformation
2D Transformation2D Transformation
2D TransformationShahDhruv21
 
Popis predmeta posebno vaznih za upis (2013.)
Popis predmeta posebno vaznih za upis (2013.)Popis predmeta posebno vaznih za upis (2013.)
Popis predmeta posebno vaznih za upis (2013.)Trgovacka skola - Zagreb
 
AULA 065 EAE DM - A PREDESTINAÇÃO SEGUNDO A DOUTRINA DE PAULO - 20170316
AULA 065 EAE DM - A PREDESTINAÇÃO SEGUNDO A DOUTRINA DE PAULO - 20170316AULA 065 EAE DM - A PREDESTINAÇÃO SEGUNDO A DOUTRINA DE PAULO - 20170316
AULA 065 EAE DM - A PREDESTINAÇÃO SEGUNDO A DOUTRINA DE PAULO - 20170316Daniel de Melo
 
3D Geometric Transformations
3D Geometric Transformations3D Geometric Transformations
3D Geometric TransformationsIshan Parekh
 
Conozca el espiritismo
Conozca el espiritismoConozca el espiritismo
Conozca el espiritismoAndres Abreo
 
2 d geometric transformations
2 d geometric transformations2 d geometric transformations
2 d geometric transformationsMohd Arif
 
Line Segment Intersections
Line Segment IntersectionsLine Segment Intersections
Line Segment IntersectionsBenjamin Sach
 
Fundamental i modulo i - roteiro 2
Fundamental i   modulo i - roteiro 2 Fundamental i   modulo i - roteiro 2
Fundamental i modulo i - roteiro 2 Shantappa Jewur
 
Electromagnetic theory EMT lecture 1
Electromagnetic theory EMT lecture 1Electromagnetic theory EMT lecture 1
Electromagnetic theory EMT lecture 1Ali Farooq
 

What's hot (16)

El principio divino texto oficial a color
El principio divino   texto oficial a colorEl principio divino   texto oficial a color
El principio divino texto oficial a color
 
3D Transformation
3D Transformation3D Transformation
3D Transformation
 
Polygon mesh
Polygon meshPolygon mesh
Polygon mesh
 
Change of order in integration
Change of order in integrationChange of order in integration
Change of order in integration
 
Vinha de luz
Vinha de luzVinha de luz
Vinha de luz
 
Esdei 01.01 parte i_2016
Esdei 01.01 parte i_2016Esdei 01.01 parte i_2016
Esdei 01.01 parte i_2016
 
Applied Quantum Mechanics_part 2.pdf
Applied Quantum Mechanics_part 2.pdfApplied Quantum Mechanics_part 2.pdf
Applied Quantum Mechanics_part 2.pdf
 
2D Transformation
2D Transformation2D Transformation
2D Transformation
 
Popis predmeta posebno vaznih za upis (2013.)
Popis predmeta posebno vaznih za upis (2013.)Popis predmeta posebno vaznih za upis (2013.)
Popis predmeta posebno vaznih za upis (2013.)
 
AULA 065 EAE DM - A PREDESTINAÇÃO SEGUNDO A DOUTRINA DE PAULO - 20170316
AULA 065 EAE DM - A PREDESTINAÇÃO SEGUNDO A DOUTRINA DE PAULO - 20170316AULA 065 EAE DM - A PREDESTINAÇÃO SEGUNDO A DOUTRINA DE PAULO - 20170316
AULA 065 EAE DM - A PREDESTINAÇÃO SEGUNDO A DOUTRINA DE PAULO - 20170316
 
3D Geometric Transformations
3D Geometric Transformations3D Geometric Transformations
3D Geometric Transformations
 
Conozca el espiritismo
Conozca el espiritismoConozca el espiritismo
Conozca el espiritismo
 
2 d geometric transformations
2 d geometric transformations2 d geometric transformations
2 d geometric transformations
 
Line Segment Intersections
Line Segment IntersectionsLine Segment Intersections
Line Segment Intersections
 
Fundamental i modulo i - roteiro 2
Fundamental i   modulo i - roteiro 2 Fundamental i   modulo i - roteiro 2
Fundamental i modulo i - roteiro 2
 
Electromagnetic theory EMT lecture 1
Electromagnetic theory EMT lecture 1Electromagnetic theory EMT lecture 1
Electromagnetic theory EMT lecture 1
 

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 presentationLee 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 09Graham Richards
 
DiffCalcSecondPartialReview
DiffCalcSecondPartialReviewDiffCalcSecondPartialReview
DiffCalcSecondPartialReviewCarlos Vázquez
 
Financing Solutions From PAETEC
Financing Solutions From PAETECFinancing Solutions From PAETEC
Financing Solutions From PAETECTracey Gaffney
 
Guión para la Eucaristía
Guión para la EucaristíaGuión para la Eucaristía
Guión para la Eucaristíacristinamoreubi
 
Application problems - pt 2 - Answers
Application problems - pt 2 - AnswersApplication problems - pt 2 - Answers
Application problems - pt 2 - AnswersCarlos Vázquez
 
Jive World 12 - Apps 202
Jive World 12 - Apps 202Jive World 12 - Apps 202
Jive World 12 - Apps 202weitzelm
 
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 Illustrationstbmertz
 
Meet my brother
Meet my brotherMeet my brother
Meet my brothercpremolino
 
Lolossidis Showrooms In Faliro
Lolossidis Showrooms In FaliroLolossidis Showrooms In Faliro
Lolossidis Showrooms In Faliroglitz
 
What Is Esocial Science.Key
What Is Esocial Science.KeyWhat Is Esocial Science.Key
What Is Esocial Science.Keyncess
 
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
 
早稲田サイコム科学と社会 プレゼン
早稲田サイコム科学と社会 プレゼン早稲田サイコム科学と社会 プレゼン
早稲田サイコム科学と社会 プレゼン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

Geometria - przekształcenia
Geometria - przekształceniaGeometria - przekształcenia
Geometria - przekształceniaknbb_mat
 
Geometria - przestrzenie afiniczne
Geometria - przestrzenie afiniczneGeometria - przestrzenie afiniczne
Geometria - przestrzenie afiniczneknbb_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 przestrzenicieszak
 
Geometria - przestrzeń euklidesowa liniowa
Geometria - przestrzeń euklidesowa liniowaGeometria - przestrzeń euklidesowa liniowa
Geometria - przestrzeń euklidesowa liniowaknbb_mat
 
Prolog: niedeterminizm i korutyny
Prolog: niedeterminizm i korutynyProlog: niedeterminizm i korutyny
Prolog: niedeterminizm i korutynyprzemko
 

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 workplaceArek 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.
 
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)