Geometriai algoritmusok

Hasonló dokumentumok
Geometriai algoritmusok

Adatszerkezetek I. 10. előadás

Algoritmizálás, adatmodellezés 10. előadás

Geometriai algoritmusok. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

Geometriai algoritmusok

Koordináta-geometria feladatok (emelt szint)

Síkbeli egyenesek. 2. Egy egyenes az x = 1 4t, y = 2 + t parméteres egyenletekkel adott. Határozzuk meg

Geometriai algoritmusok

Síkbeli egyenesek Egy egyenes az x = 1 4t, y = 2 + t parméteres egyenletekkel adott. Határozzuk meg

Koordinátageometria. , azaz ( ) a B halmazt pontosan azok a pontok alkotják, amelynek koordinátáira:

Koordináta-geometria feladatok (középszint)

KOORDINÁTA-GEOMETRIA

Középpontos hasonlóság szerkesztések

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Megoldások

I. Vektorok. Adott A (2; 5) és B ( - 3; 4) pontok. (ld. ábra) A két pont által meghatározott vektor:

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Megoldások

Az egyenes és a sík analitikus geometriája

A 2013/2014. tanévi Országos Középiskolai Tanulmányi Verseny második forduló MATEMATIKA I. KATEGÓRIA (SZAKKÖZÉPISKOLA) Javítási-értékelési útmutató

Koordinátageometriai gyakorló feladatok I ( vektorok )

VEKTOROK. 1. B Legyen a( 3; 2; 4), b( 2; 1; 2), c(3; 4; 5), d(8; 5; 7). (a) 2a 4c + 6d [(30; 10; 30)]

Koordináta-geometria II.

8. előadás. Kúpszeletek

Koordináta - geometria I.

Vektoralgebra feladatlap 2018 január 20.

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Geometria I.

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK EMELT SZINT Koordinátageometria

= Y y 0. = Z z 0. u 1. = Z z 1 z 2 z 1. = Y y 1 y 2 y 1

9. Írjuk fel annak a síknak az egyenletét, amely átmegy az M 0(1, 2, 3) ponton és. egyenessel;

Analitikus térgeometria

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon) b) Minden belső pont kirajzolásával (kitöltött)

Helyvektorok, műveletek, vektorok a koordináta-rendszerben

Érettségi feladatok Koordinátageometria_rendszerezve / 5

= 7, a 3. = 7; x - 4y =-8; x + 2y = 10; x + y = 7. C-bôl induló szögfelezô: (-2; 3). PA + PB = PA 1. (8; -7), n(7; 8), 7x + 8y = 10, x = 0 & P 0;

Nagy András. Feladatok a koordináta-geometria, egyenesek témaköréhez 11. osztály 2010.

Érettségi feladatok: Koordináta-geometria 1/5

A Fermat-Torricelli pont

Cohen-Sutherland vágóalgoritmus

Koordináta geometria III.

Skaláris szorzat: a b cos, ahol α a két vektor által bezárt szög.

(a b)(c d)(e f) = (a b)[(c d) (e f)] = = (a b)[e(cdf) f(cde)] = (abe)(cdf) (abf)(cde)

Hasonlóság 10. évfolyam

5. házi feladat. AB, CD kitér élpárra történ tükrözések: Az ered transzformáció: mivel az origó xpont, így nincs szükség homogénkoordinátás

Feladatok Házi feladat. Keszeg Attila

Arany Dániel Matematikai Tanulóverseny 2017/2018-as tanév 2. forduló Haladók II. kategória

A kör. A kör egyenlete

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Megoldások

Megyei matematikaverseny évfolyam 2. forduló

Lehet hogy igaz, de nem biztos. Biztosan igaz. Lehetetlen. A paralelogrammának van szimmetria-középpontja. b) A trapéznak két szimmetriatengelye van.

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK KÖZÉPSZINT Függvények

HASONLÓSÁGGAL KAPCSOLATOS FELADATOK. 5 cm 3 cm. 2,4 cm

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK KÖZÉP SZINT Síkgeometria

Függvények Megoldások

Feladatok a májusi emelt szintű matematika érettségi példáihoz Hraskó András

Geometria. a. Alapfogalmak: pont, egyenes, vonal, sík, tér (Az alapfogalamakat nem definiáljuk)

b) Ábrázolja ugyanabban a koordinátarendszerben a g függvényt! (2 pont) c) Oldja meg az ( x ) 2

Koordináta-geometria feladatgyűjtemény

XVIII. Nemzetközi Magyar Matematika Verseny

10. Koordinátageometria

, D(-1; 1). A B csúcs koordinátáit az y = + -. A trapéz BD

GEOMETRIA 1, alapszint

Koordinátageometria. M veletek vektorokkal grakusan. Szent István Egyetem Gépészmérnöki Kar Matematika Tanszék 1

Gyakorló feladatok 9.évf. halmaznak, írd fel az öt elemű részhalmazokat!. Add meg a következő halmazokat és ábrázold Venn-diagrammal:

Geometria 1 normál szint

Vektorok és koordinátageometria

5 1 6 (2x3 + 4) 7. 4 ( ctg(4x + 2)) + c = 3 4 ctg(4x + 2) + c ] 12 (2x6 + 9) 20 ln(5x4 + 17) + c ch(8x) 20 ln 5x c = 11

Geometriai valo szí nű se g

ARCHIMEDES MATEMATIKA VERSENY

HALMAZOK, SZÁMHALMAZOK, PONTHALMAZOK

Hármas integrál Szabó Krisztina menedzser hallgató. A hármas és háromszoros integrál

1. Legyen egy háromszög három oldalának a hossza a, b, c. Bizonyítsuk be, hogy Mikor állhat fenn egyenlőség? Kántor Sándorné, Debrecen

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉP SZINT. Koordináta-geometria

Országos Középiskolai Tanulmányi Verseny 2011/2012 Matematika I. kategória (SZAKKÖZÉPISKOLA) 2. forduló - megoldások. 1 pont Ekkor

Vektorok összeadása, kivonása, szorzás számmal, koordináták

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉPSZINT Függvények

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

NULLADIK MATEMATIKA szeptember 13.

Követelmény a 6. évfolyamon félévkor matematikából

A 2013/2014 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Láthatósági kérdések

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉP SZINT Koordináta-geometria

Síkgeometria 12. évfolyam. Szögek, szögpárok és fajtáik

λ 1 u 1 + λ 2 v 1 + λ 3 w 1 = 0 λ 1 u 2 + λ 2 v 2 + λ 3 w 2 = 0 λ 1 u 3 + λ 2 v 3 + λ 3 w 3 = 0

15. Koordinátageometria

A keresett kör középpontja Ku ( ; v, ) a sugara r = 1. Az adott kör középpontjának koordinátái: K1( 4; 2)

Érettségi feladatok: Síkgeometria 1/6

Koordináta-geometria feladatgyűjtemény (A feladatok megoldásai a dokumentum végén találhatók)

NULLADIK MATEMATIKA ZÁRTHELYI

10. Tétel Háromszög. Elnevezések: Háromszög Kerülete: a + b + c Területe: (a * m a )/2; (b * m b )/2; (c * m c )/2

10. előadás. Konvex halmazok

Első sorozat (2000. május 22. du.) 1. Oldjamegavalós számok halmazán a. cos x + sin2 x cos x. +sinx +sin2x =

Hogyan óvjuk meg értékes festményeinket?

NULLADIK MATEMATIKA ZÁRTHELYI

Országos Középiskolai Tanulmányi Verseny 2009/2010 Matematika I. kategória (SZAKKÖZÉPISKOLA) 2. forduló feladatainak megoldása

Síklapú testek. Gúlák, hasábok Metszésük egyenessel, síkkal

Regresszió számítás. Tartalomjegyzék: GeoEasy V2.05+ Geodéziai Kommunikációs Program

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

Az egyenlőtlenség mindkét oldalát szorozzuk meg 4 16-al:

Láthatjuk, hogy az els szám a 19, amelyre pontosan 4 állítás teljesül, tehát ez lesz a legnagyobb. 1/5

15. Koordinátageometria

Gyakorló feladatok a geometria témazáró dolgozathoz

Átírás:

(Horváth Gyula és Szlávi Péter előadásai felhasználásával)

Feladat: Adjuk meg, hogy az origóból nézve az 1. síknegyedbe eső P ponthoz képest a Q balra, jobbra vagy pedig egy irányban látszik-e! Irány(P,Q) = 1, 1, 0, egy irányb Ponttípus: Típus Tpont=rekord(x,y: Egész) ha ha ha balra jobbra an Q P Geometriai algoritmusok 2016.01.27. 14:08 2/60

Értelmezés: A pontok irányát megadhatjuk az oda vezető egyenes és az x-tengely szögével. Q < tan( )<tan( ) P tan( )=P.y/P.x tan( )=Q.y/Q.x P P.x P.y Geometriai algoritmusok 2016.01.27. 14:08 3/60

< tan( )<tan( ) P.y/P.x<Q.y/Q.x P.y*Q.x<Q.y*P.x P.y*Q.x Q.y*P.x<0 Állítás: Irány(P,Q)=sgn(P.y*Q.x Q.y*P.x) (és ez igaz nem csak az 1. síknegyedben!). sgn(p.y*q.x Q.y*P.x) = 1, 1, 0, ha ha ha Q Q Q a P - töl balra a P - töl jobbra és P egy irányb an Geometriai algoritmusok 2016.01.27. 14:08 4/60

Irány(P,Q): S:=P.y*Q.x Q.y*P.x Ha S<0 akkor Irány:=-1 különben ha S=0 akkor Irány:=0 különben Irány:=1 Függvény vége. Geometriai algoritmusok 2016.01.27. 14:08 5/60

Feladat: Egy s (A B) szakaszhoz képest egy t (B C) szakasz milyen irányban fordul? Megoldásötlet: Toljuk el az s-t és a t-t úgy, hogy az A pont az origóba kerüljön! Ezzel visszavezetjük az irányos feladatra! Fordul(A,B,C)=Irány(B A,C A) Ezzel ekvivalens feladat: Az (A,B)-n átmenő egyenestől a C pont balra van, vagy jobbra van, vagy az (A,B) egyenesen van? Geometriai algoritmusok 2016.01.27. 14:08 6/60 A s t C B

Fordul(A,B,C): P:=B-A {P.x:=B.x-A.x; P.y:=B.y-A.y} Q:=C-A {Q.x:=C.x-A.x; Q.y:=C.y-A.y} Fordul:=Irány(P,Q) Függvény vége. t C A s B Geometriai algoritmusok 2016.01.27. 14:08 7/60

Feladat: Döntsük el, hogy egy C pont rajta van-e egy (A,B) szakaszon! Megoldás: Biztos nincs rajta, ha az A-B-C úton valamerre fordulni kell! Ha nem kell fordulni, akkor A és B között kell lennie! A C B Geometriai algoritmusok 2016.01.27. 14:08 8/60

Rajta(a,b,c): Rajta:=Fordul(a,b,c)=0 és Közte(a.x,c.x,b.x) és Közte(a.y,c.y,b.y) Függvény vége. Közte(r,s,t): Közte:=r s és s t vagy t s és s r Függvény vége. Geometriai algoritmusok 2016.01.27. 14:08 9/60

Feladat: Döntsük el, hogy az (A,B) szakasz metszi-e a (C,D) szakaszt! Lehetséges esetek: A C D B A C D A B C A C D D B B A C B D Geometriai algoritmusok 2016.01.27. 14:08 10/60

Metszi(A,B,C,D): Metszi:=Fordul(A,B,C)*Fordul(A,B,D)<0 és Fordul(C,D,A)*Fordul(C,D,B)<0 vagy Rajta(A,B,C) vagy Rajta(A,B,D) vagy Rajta(C,D,A) vagy Rajta(C,D,B) Függvény vége. A C D B Geometriai algoritmusok 2016.01.27. 14:08 11/60

Feladat: Döntsük el, hogy a D pont az (A,B,C) háromszög belsejében van-e! Megoldásötlet: Belül van, ha a háromszöget A B C A sorrendben körbejárva a D pont vagy mindig balra, vagy mindig jobbra van. C D B Geometriai algoritmusok 2016.01.27. 14:08 12/60 A

Belül(A,B,C,D): Belül:=Fordul(A,B,D)=Fordul(B,C,D) és Fordul(B,C,D)=Fordul(C,A,D) Függvény vége. C B C B A D A D Geometriai algoritmusok 2016.01.27. 14:08 13/60

Feladat: Adott A, B és D pont esetén adjunk meg további N pont közül egy P i pontot úgy, hogy a D pont az (A,B,P i ) háromszög belsejében legyen! Megoldásötlet: Belül van a P i pont, ha a háromszöget A B P i A sorrendben körbejárva a D pont vagy mindig balra, vagy mindig jobbra van. Geometriai algoritmusok 2016.01.27. 14:08 14/60

Keresés(A,B,N,P,D,Van,S): ir:=fordul(a,b,d); i:=1 Ciklus amíg i N és (Fordul(B,P(i),D) ir vagy Fordul(P(i),A,D) ir) i:=i+1 Ciklus vége Van:=i N Ha Van akkor S:=i Eljárás vége. Geometriai algoritmusok 2016.01.27. 14:08 15/60

Feladat: Adott A és B pont esetén adjunk meg további N pont közül egy P i pontot úgy, hogy az (A,B,P i ) háromszög belsejében egyetlen más pont se legyen! Feltehető, hogy az összes pont az (A,B) egyenestől balra van! P 1 P 6 P 3 P 2 P 5 P 7 P 4 B A Geometriai algoritmusok 2016.01.27. 14:08 16/60

Megoldás: Ha van egy potenciális jelöltünk (pl. P 1 ), akkor az (A,P 1 )-től balra levők és a (B,P 1 )-től jobbra levők biztos nincsenek az (A, B,P 5 ) háromszögben! Az (A,P 1 )-től jobbra levők és a (B,P 1 )-től balra levők pedig benne vannak. P 1 P 6 P 3 P 2 P 5 P 7 P 4 B A Geometriai algoritmusok 2016.01.27. 14:08 17/60

Kiválasztás(A,B,N,P,D,S): S:=1 Ciklus i=2-től N-ig Ha Fordul(A,P(S),P(i))=1 és Fordul(B,P(S),P(i))=-1 akkor S:=i Ciklus vége Eljárás vége. P 1 P 6 P 3 {jobbra} {balra} P 2 P 5 P 7 P 4 B A Geometriai algoritmusok 2016.01.27. 14:08 18/60

Feladat: Adott A, B és D pont esetén adjunk meg további N pont közül egy P i pontot úgy, hogy a D pont az (A,B,P i ) háromszög belsejében legyen, de egyetlen más pont se legyen benne! Feltehető, hogy a D pont az (A,B) egyenestől balra van! P 5 P 4 D P 3 B P 2 A P 1 Geometriai algoritmusok 2016.01.27. 14:08 19/60

Megoldás: Nem oldható meg, ha a piros színű tartományban van pont. Az (A,B)-től jobbra levő pontok nem jók szürke tartomány. Az (A,D)-től jobbra levő pontok nem jók sárga tartomány. A (B,D)-től balra levő pontok nem jók zöld tartomány. Sajnos nem a teljes fehér tartomány jó! Geometriai algoritmusok 2016.01.27. 14:08 20/60

Megoldás: Az (A,D) egyenestől balra, a (B,D) egyenestől jobbra olyan P i pontot kell találnunk, hogy az (A,B,P i ) háromszög belsejében ne legyen más pont! Ha van egy potenciális jelöltünk (pl. P 4 ), akkor az (A,P 4 )-től balra levők és a (B,P 4 )-től jobbra levők biztos nincsenek az (A, B,P 4 ) háromszögben! Finomíthatjuk a megoldást, ha P 6 P P 3 4 B feltesszük, hogy nincs P 2 és P P 3 7 P 5 D típusú pont! P 2 A P 1 Geometriai algoritmusok 2016.01.27. 14:08 21/60

Keresés(A,B,N,P,D,Van,S): {(A,B)-től és (A,D)-től balra} S:=0 {(B,D)-től jobbra} Ciklus i=1-től N-ig Ha Fordul(A,B,P(i))=-1 és Fordul(B,D,P(i))=1 és Fordul(A,D,P(i))=-1 akkor Ha S=0 akkor S:=i különben Ha Fordul(A,P(S),P(i))=1 és Fordul(B,P(S),P(i))=-1 akkor S:=i Ciklus vége P Van:=S>0 6 P P 3 4 B P Eljárás vége. 7 P 5 D P 2 A Geometriai algoritmusok P 1 2016.01.27. 14:08 22/60

Keresés(A,B,N,P,D,Van,S): Ha Fordul(A,B,D)>0 akkor Csere(A,B) AA:=0; BB:=0; C:=0 Ciklus i=1-től N-ig {zöld-sárga pontok} FAB:=Fordul(A,B,P(i)) FBD:=Fordul(B,D,P(i)) FDA:=Fordul(D,A,P(i)) {a szürke és a piros tartomány már a ciklus előtt kiszűrhető, de itt sem zavarnak} P 5 P 4 P 6 P 7 D P 3 B P 2 A Geometriai algoritmusok 2016.01.27. 14:08 23/60 P 1

Ha FAB<0 és FDA>0 és FBD<0 akkor Ha AA=0 vagy Fordul(A,P(AA),P(i))>0 akkor AA:=i {(A,B)-től balra, (D,A)-tól jobbra, (B,D)-től balra, (A,P(AA)-tól jobbra} Ha FAB<0 és FDA<0 és FBD>0 akkor Ha BB=0 vagy Fordul(B,P(BB),P(i))<0 akkor BB:=i {(A,B)-től balra, (D,A)-tól balra, (B,D)-től jobbra, (B,P(BB)-tól balra} Ciklus vége Geometriai algoritmusok 2016.01.27. 14:08 24/60

i:=1; C:=0 Ciklus amíg i n és C 0 {egy C meghatározása} Ha i AA és i BB akkor Ha AA>0 akkor FAAA:=Fordul(A,P(AA),P(i)) Ha BB>0 akkor FBBB:=Fordul(B,P(BB),P(i)) FDA:=Fordul(D,A,P(i)) FBD:=Fordul(B,D,P(i)) Ha (AA=0 vagy FAAA>0) és (BB=0 vagy FBBB<0) és FDA>0 és FBD>0 akkor C:=i Ciklus vége Ha C>0 akkor {C finomítása} Geometriai algoritmusok 2016.01.27. 14:08 25/60

{C finomítása} Ciklus i=c+1-től n-ig {(A,B)-től balra, (A,C)-től jobbra} Ha i AA és i BB akkor {(B,C)-től balra} FAB:=Fordul(A,B,P(i)) FAC:=Fordul(A,P(C),P(i)) FBC:=Fordul(B,P(C),P(i)) Ha FAB<0 és FAC>0 és FBC<0 akkor C:=i Ciklus vége Eljárás vége. Geometriai algoritmusok 2016.01.27. 14:08 26/60

Feladat: Döntsük el, hogy a (P 1,,P n ) sokszög konvex sokszög-e! (A pontokat az óramutató járásával ellenkező sorrendben adjuk meg.) Megoldás: A sokszög konvex, ha minden szöge kisebb 180 foknál, azaz az óramutató járásával ellentétes körbejárással haladva minden csúcsban balra kell fordulni! Geometriai algoritmusok 2016.01.27. 14:08 27/60

Konvex(P,N) P(N+1):=P(1); P(N+2):=P(2); i:=1 Ciklus amíg i N és Fordul(P(i),P(i+1),P(i+2))<0 i:=i+1 Ciklus vége Konvex:=i>N Eljárás vége. Geometriai algoritmusok 2016.01.27. 14:08 28/60

Feladat: Döntsük el, hogy a D pont a (P 1,,P n ) konvex sokszög belsejében van-e! Megoldásötlet: Belül van, ha a sokszöget adott sorrendben körbejárva a D pont vagy mindig balra, vagy mindig jobbra van. Geometriai algoritmusok 2016.01.27. 14:08 29/60

Belül(N,P,D): P(N+1):=P(1); Ir:=Fordul(P(1),P(2),D); i:=2 Ciklus amíg i N és Ir=Fordul(P(i),P(i+1),D) i:=i+1 Ciklus vége Belül:=i>N Függvény vége. Geometriai algoritmusok 2016.01.27. 14:08 30/60

Feladat: Döntsük el, hogy a D pont a (P 1,,P n ) konkáv sokszög belsejében van-e! Probléma: Itt nem működik a konvex esetben alkalmazható: mindig egy irányban van elv. Geometriai algoritmusok 2016.01.27. 14:08 31/60

Megoldás: Kössük össze a D pontot egy biztosan külső Q ponttal, majd számoljuk meg, hogy a (D,Q) szakasz a sokszög hány oldalát metszi! Q. y : Q. x : min i 1,..., N max i 1,.., N P i. x D. x P. y 1 P i i. x Geometriai algoritmusok 2016.01.27. 14:08 32/60

Külső(N,P,D,Q): Q.y:=P(1).y; Q.x:=- Ciklus i=2-től N-ig Ha Q.y>P(i).y akkor Q.y:=P(i).y Ha P(i).x<D.x akkor Ha Q.x<P(i).x akkor Q.x:=P(i).x Ciklus vége Q.y:=Q.y-1 Függvény vége. Ha Q.x=- maradt, akkor a D pont kívül van! Geometriai algoritmusok 2016.01.27. 14:08 33/60

Belül(N,P,D): P(N+1):=P(1); Db:=0 Külső(N,P,D,Q) Ciklus i=1-től N-ig Ha Metszi(P(i),P(i+1),D,Q) akkor Db:=Db+1 Ciklus vége Belül:=(Db mod 2)=1 Függvény vége. Geometriai algoritmusok 2016.01.27. 14:08 34/60

Feladat: Egy látképet egyenes szakaszok sorozatával adunk meg. A látkép felett a függőleges iránnyal az óramutató járása szerint szöget bezárva, végtelen távolságban van a Nap. Add meg, hogy a Nap megvilágítja-e a teljes látképet! Ha nem, akkor add meg a megvilágítás irányából az első olyan szakasz sorszámát, amelyet a Nap nem világít meg! Geometriai algoritmusok 2016.01.27. 14:08 35/60

Árnyék(N,H,Mind,E,Alfa): (DX,DY):=Alfa szögből számítva i:=1 Ciklus amíg i<n és Fordul(H(i)-(DX,DY),H(i),H(i+1))=-1 i:=i+1 Ciklus vége Mind:=i N Ha nem Mind akkor E:=i Eljárás vége Geometriai algoritmusok 2016.01.27. 14:08 36/60

Feladat: Egy koordinátarendszerben az x-tengely mentén téglalap alakú házak helyezkednek el. Egy lámpa balról, fentről világítja meg a házakat. Melyek azok a házak, amelyek teljesen árnyékban vannak? Megjegyzés: Az ábra szerint elég a házak bal felső sarkát ismerni! Geometriai algoritmusok 2016.01.27. 14:08 37/60

Megoldás: Legyen L a lámpa, H(i) az i-edik ház jobb felső sarkának helye, u pedig az utoljára megvilágított ház! Azok a házak vannak árnyékban, amelyeket az előttük levő utolsó megvilágított ház teljesen takar. Azaz az L H(u) H(i) úton nem balra kell fordulni! Geometriai algoritmusok 2016.01.27. 14:08 38/60

Árnyék(L,N,H,Db,Y): Db:=0; u:=1 Ciklus i=2-től N-ig Ha Fordul(L,H(u),H(i))=-1 akkor u:=i különben Db:=Db+1; Y(Db):=i Ciklus vége Eljárás vége Geometriai algoritmusok 2016.01.27. 14:08 39/60

Feladat: Egy koordinátarendszerben az x-tengely mentén téglalap alakú házak helyezkednek el. A Nap balról, fentről süt rájuk, a házakhoz párhuzamos fénysugarak érkeznek. Melyek azok a házak, amelyeknek legalább egyetlen pontjára süt a nap? Az ábra szerint elég a házak bal felső sarkát ismerni! DY fénysugár DX Geometriai algoritmusok 2016.01.27. 14:08 40/60

Megoldás: Legyen H(i) az i-edik ház jobb felső sarkának helye, u pedig az utoljára megvilágított ház! Azok a házak vannak megvilágítva, amelyeket az előttük levő utolsó megvilágított ház nem takar. Azaz a H H(u) H(i) úton balra kell fordulni! Geometriai algoritmusok 2016.01.27. 14:08 41/60

Világos(DX,DY,N,H,Db,Y): Db:=1; Y(Db):=1 Ciklus i=2-től N-ig Ha irány(h(y(db))-(dx,dy),h(y(db)),h(i))=-1 akkor Db:=Db+1; Y(Db):=i Ciklus vége Eljárás vége Geometriai algoritmusok 2016.01.27. 14:08 42/60

Feladat: Adott a síkon n darab pont, amelyek nem esnek egy egyenesre. A pontok (x,y) koordinátáikkal adottak. Kössünk össze pontpárokat egyenes szakaszokkal úgy, hogy olyan zárt poligont kapjunk, amelyben nincs metsző szakaszpár! Geometriai algoritmusok 2016.01.27. 14:08 43/60

Megoldás: Válasszuk ki a legkisebb x-koordinátájú pontot, ha több ilyen van, akkor ezek közül válasszuk a legkisebb y-koordinátájút! Ezt nevezzük (bal-alsó) sarokpontnak és cseréljük meg az első ponttal! Poligon(N,P): Sarokpont(N,P); Rendez(N,P); Fordít(N,P) Eljárás vége. Geometriai algoritmusok 2016.01.27. 14:08 44/60

Sarokpont(N,P): s:=1 Ciklus i=2-től N-ig Ha P(i).x<P(s).x vagy P(i).x=P(s).x és P(i).y<P(s).y akkor s:=i Ciklus vége Csere(P(1),P(s)) Eljárás vége. Geometriai algoritmusok 2016.01.27. 14:08 45/60

Húzzunk (fél) egyenest a sarokpontból minden ponthoz! Rendezzük a pontokat a sarokponton áthaladó, x-tengellyel párhuzamos egyenessel bezárt szög alapján, azonos szög esetén pedig a sarokponttól vett távolság szerint! Geometriai algoritmusok 2016.01.27. 14:08 46/60

A sarokpont legyen az első, és p i előbb legyen mint p j akkor és csak akkor, ha a p 1 p i p j úton balra kell fordulni, vagy nem kell fordulni, de p i van közelebb a p 1 -hez! kisebb(q,a,b): ir:=fordul(q,a,b) kisebb:=ir=-1 vagy ir=0 és a.x<b.x Függvény vége. A rendezésnél persze elveszik a pontok régi sorszáma, azaz célszerű azt megőrizni, pl. a PONT típusba egy új mezőt, a sorszám mezőt felvéve. Geometriai algoritmusok 2016.01.27. 14:08 47/60

Rendez(N,P): Ciklus i=2-től N-1-ig min:=i Ciklus j=i+1-től N-ig Ha kisebb(p(1),p(j),p(i)) akkor min:=j Ciklus vége Csere(P(min),P(i)) Ciklus vége Eljárás vége. Geometriai algoritmusok 2016.01.27. 14:08 48/60

Fordít(N,P): Ha N>2 és Fordul(P(1),P(N),P(N-1))=0 akkor Verembe(P(N)); Fordít(N-1,P) Veremből(P(N)) Eljárás vége. Kérdés: Mit csinált a rendezés, ha az utolsó irány a függőleges, azaz a pontok x-koordinátája megegyezik? A jó megoldás: kisebb(q,a,b): ir:=fordul(q,a,b) kisebb:=ir=-1 vagy ir=0 és (a.x<b.x vagy a.x=b.x és a.y<b.y) Függvény vége. Geometriai algoritmusok 2016.01.27. 14:08 49/60

Kössük össze a pontokat a kapott sorrendben! Geometriai algoritmusok 2016.01.27. 14:08 50/60

Feladat: Adott a síkon n darab pont, amelyek nem esnek egy egyenesre. A pontok (x,y) koordinátáikkal adottak. Adjuk meg a legkisebb konvex poligont, amely az összes pontot tartalmazza! Geometriai algoritmusok 2016.01.27. 14:08 51/60

Megoldás: Első lépésként rendezzük a ponthalmazt a bal-alsó sarokpontra vett polárszög szerint, majd minden egyenesen csak a sarokponttól legtávolabbi pontot hagyjuk meg, a többit töröljük. Az így törölt pontok biztosan nem lehetnek csúcspontjai a konvex buroknak. Geometriai algoritmusok 2016.01.27. 14:08 52/60

Megoldás: Második lépésként haladjunk körbe a megmaradt pontokon! Hagyjuk el a q i+1 pontot, ha a q i q i+1 q i+2 úton nem balra kell fordulni! Ez az elv a korábban elhagyott pontokra is működik, azaz az elhagyás felesleges. Geometriai algoritmusok 2016.01.27. 14:08 53/60

A rendezésnél persze elveszik a pontok régi sorszáma, azaz célszerű azt megőrizni, pl. a PONT típusba egy új mezőt, a sorszám mezőt felvéve. Konvex burok(n,p): Sarokpont(N,P); Rendez(N,P); Fordít(N,P) P(N+1):=P(1); Körbejár(N,P) Eljárás vége. Geometriai algoritmusok 2016.01.27. 14:08 54/60

Körbejár(N,P,M,B): i:=3 Ciklus amíg Fordul(P(1),P(i-1),P(i))=0 i:=i+1 Ciklus vége B(1):=P(1); B(2):=P(i-1); M:=2 Ciklus amíg i N+1 Ha Fordul(P(B(M-1)),P(B(M)),P(i)) 0 akkor M:=M-1 különben M:=M+1; B(M):=i; i:=i+1 Ciklus vége M:=M-1 Eljárás vége. Geometriai algoritmusok 2016.01.27. 14:08 55/60

Feladat: Adott a síkon n darab pont, valamint egy további Q pont. A pontok (x,y) koordinátáikkal adottak. Adj meg egy P i, P j pontpárt úgy, hogy a Q pont a (P i,p j ) szakaszon legyen! Megoldás Osszuk két diszjunkt részhalmazba P pontjait aszerint, hogy a Q-n átmenő, x-tengellyel párhuzamos egyenes melyik oldalára esnek! Rendezzük őket óramutató járásával ellentétes irányba! Geometriai algoritmusok 2016.01.27. 14:08 56/60

Az alábbi esetben az alsó pontoknál kell továbblépni, azaz i:=i+1! Geometriai algoritmusok 2016.01.27. 14:08 57/60

Az alábbi esetben a felső pontoknál kell továbblépni, azaz j:=j+1! Megállunk, ha a Q pont rajta van az (A[i],F[j]) egyenesen, vagy ha körbeértünk. Geometriai algoritmusok 2016.01.27. 14:08 58/60

Keresés(N,P,Q,Van,i,j): Szétválogat(N,P,Q,NA,A,Aindex,NF,F,Findex) Rendez(NA,A,Aindex,Q); Rendez(NF,F,Findex,Q); i:=1; j:=1; van:=hamis Ciklus amíg i NA és j NF és nem van f:=fordul(a[i],f[j],q) Ha f<0 akkor j:=j+1 különben ha f>0 akkor i:=i+1 különben van:=igaz Ciklus vége Ha van akkor i:=aindex(i); j:=findex(j) Eljárás vége. Geometriai algoritmusok 2016.01.27. 14:08 59/60

előadás vége