GEOMETRIAI FELADATOK 1. (ESETTANULMÁNY)

Hasonló dokumentumok
Összeállította: dr. Leitold Adrien egyetemi docens

17. előadás: Vektorok a térben

Geometriai algoritmusok

Vektorgeometria (1) First Prev Next Last Go Back Full Screen Close Quit

Matematika A1a Analízis

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

Lineáris algebra mérnököknek

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

Koordinátageometria Megoldások

Az M A vektor tehát a három vektori szorzat előjelhelyes összege:

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

Vektorgeometria (2) First Prev Next Last Go Back Full Screen Close Quit

VIK A2 Matematika - BOSCH, Hatvan, 3. Gyakorlati anyag. Mátrix rangja

5. előadás. Skaláris szorzás

Összeállította: dr. Leitold Adrien egyetemi docens

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

Egyenes és sík. Wettl Ferenc szeptember 29. Wettl Ferenc () Egyenes és sík szeptember / 15

O ( 0, 0, 0 ) A ( 4, 0, 0 ) B ( 4, 3, 0 ) C ( 0, 3, 0 ) D ( 4, 0, 5 ) E ( 4, 3, 5 ) F ( 0, 3, 5 ) G ( 0, 0, 5 )

Koordináta-geometria II.

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

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

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

Matematika (mesterképzés)

Függvények Megoldások

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

Vektorok és koordinátageometria

Koordináta geometria III.

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

KOVÁCS BÉLA, MATEMATIKA I.

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

Egy sík és a koordinátasíkok metszésvonalainak meghatározása

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

1. Generátorrendszer. Házi feladat (fizikából tudjuk) Ha v és w nem párhuzamos síkvektorok, akkor generátorrendszert alkotnak a sík vektorainak

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

Feladatok a koordináta-geometria, egyenesek témaköréhez 11. osztály, középszint

Érettségi feladatok Koordinátageometria_rendszerezve / 5

A hiperbolikus síkgeometria Poincaré-féle körmodellje

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

Koordináta-geometria feladatgyűjtemény

Lineáris algebra mérnököknek

ARCHIMEDES MATEMATIKA VERSENY

Koordinátageometriai gyakorló feladatok I ( vektorok )

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

Matematika 11 Koordináta geometria. matematika és fizika szakos középiskolai tanár. > o < szeptember 27.

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

LINEÁRIS ALGEBRA PÉLDATÁR MÉRNÖK INFORMATIKUSOKNAK

Oktatási Hivatal. 1 pont. A feltételek alapján felírhatók az. összevonás után az. 1 pont

1. Homogén lineáris egyenletrendszer megoldástere

Analitikus térgeometria

Számítógépes Grafika mintafeladatok

20. tétel A kör és a parabola a koordinátasíkon, egyenessel való kölcsönös helyzetük. Másodfokú egyenlőtlenségek.

Összeállította: dr. Leitold Adrien egyetemi docens

- hányadost és az osztót összeszorozzuk, majd a maradékot hozzáadjuk a kapott értékhez

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

Fejezetek az abszolút geometriából 6. Merőleges és párhuzamos egyenesek

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

Keresztmetszet másodrendű nyomatékainak meghatározása

Budapesti Műszaki Főiskola, Neumann János Informatikai Kar. Vektorok. Fodor János

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

Koordináta-geometria feladatok (emelt szint)

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

Első zárthelyi dolgozat megoldásai biomatematikából * A verzió

Vektorok. Wettl Ferenc október 20. Wettl Ferenc Vektorok október / 36

1.1. Alapfogalmak. Vektor: R 2 beli elemek vektorok. Pl.: (2, 3) egy olyan vektor aminek a kezdo pontja a (0, 0) pont és a végpontja a

Egész számok értelmezése, összehasonlítása

Lin.Alg.Zh.1 feladatok

Egyenes és sík. Wettl Ferenc Wettl Ferenc () Egyenes és sík / 16

Matematika 10 Másodfokú egyenletek. matematika és fizika szakos középiskolai tanár. > o < szeptember 27.

Geometriai alapfogalmak

8. előadás. Kúpszeletek

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

1. A komplex számok ábrázolása

6. előadás. Vektoriális szorzás Vegyesszorzat

A kör. A kör egyenlete

6. Függvények. 1. Az alábbi függvények közül melyik szigorúan monoton növekvő a 0;1 intervallumban?

karakterisztikus egyenlet Ortogonális mátrixok. Kvadratikus alakok főtengelytranszformációja

Abszolútértékes egyenlôtlenségek

Egyenletek, egyenlőtlenségek VII.

16. tétel Egybevágósági transzformációk. Konvex sokszögek tulajdonságai, szimmetrikus sokszögek

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

LINEÁRIS ALGEBRA. matematika alapszak. Euklideszi terek. SZTE Bolyai Intézet, őszi félév. Euklideszi terek LINEÁRIS ALGEBRA 1 / 40

Széchenyi István Egyetem, 2005

1. tétel. 1. Egy derékszögű háromszög egyik szöge 50, a szög melletti befogója 7 cm. Mekkora a háromszög átfogója? (4 pont)

Diszkrét matematika II., 8. előadás. Vektorterek

Geometriai példatár 2.

Diszkrét matematika 1. estis képzés

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

2016/2017. Matematika 9.Kny

KOVÁCS BÉLA, MATEMATIKA II.

GEOMETRIA 1, alapszint

Az Országos Középiskolai Tanulmányi Verseny tanévi első fordulójának feladatmegoldásai

Segédlet: Főfeszültségek meghatározása Mohr-féle feszültségi körök alkalmazásával

EGY ABLAK - GEOMETRIAI PROBLÉMA

15. LINEÁRIS EGYENLETRENDSZEREK

A 2013/2014. tanévi Országos Középiskolai Tanulmányi Verseny MATEMATIKA II. KATEGÓRIA (GIMNÁZIUM)

Az Országos Középiskolai Tanulmányi Verseny tanévi második fordulójának feladatmegoldásai. x 2 sin x cos (2x) < 1 x.

10. Koordinátageometria

Numerikus módszerek 1.

λ 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

2018/2019. Matematika 10.K

Átírás:

GEOMETRIAI FELADATOK 1. (ESETTANULMÁNY) Az esettanulmány Horváth Gyula: Geometriai algoritmusok c., az NJSzT által gondozott Tehetséggondozó Program keretén belül megjelent kötete alapján készült. 1

P 6 P 5 BEVEZETÉS A feladatok köre o Pontok összekötése zárt, nem-metsző poligonná. P 2 P 3 P 4 P 1 P 1 P 5 P 2 P 6 P 3 P 4 A nehézség: a sorrend megtalálása a kézenfekvő x-, ill. y-koordináták rendezésére építve. o 3 pont forgásiránya. A 3 pont sorrendjének, forgásirányának könnyű kifejezése valamilyen egyszerű értékkel, Pl. 1-gyel. o Egy pont adott poligon belső pontja-e? Az előzővel már megoldható. o Egy pont adott szakaszra illeszkedik-e? Az előzővel már megoldható? o 2 szakasz metsző-e? Ha igen, mi a metszéspontjuk? Az előzővel már megoldható? o Ponthalmaz konvex burka. A nehézség hasonlatos a legelsőként említett problémáéhoz. Arra és a forgásirányra építhető is egy megoldás? 2

o Egy adott pontból teljesen látható négyzetek (pl. megszámlálása). O Az origóból látható négyzetek pirosak. Alapvető típusok alapvető műveletek A fentiek megoldásában szereplő alapvető típusok (ábrázolás+művelethalmaz): o pont, o szakasz, o pontsorozat. 3

AZ ALAPVETŐ TÍPUSOK MEGVALÓSÍTÁSA o Pont Ábrázolás: Típus TPont=Rekord(x,y:Valós, hiba:logikai) Konst NullPont:TPont(0,0,Hamis) [a születéskori érték is ez] Asszociált műveletek szignatúrája: Operátor Kiírás(Konst p:tpont) Másnéven Ki: p [formázva jeleníti meg a pont koordinátáit] Kódolása erősen nyelvfüggő. 1 Operátor Beolvasás(Vált p:tpont) Másnéven Be: p [beolvassa a pontot, megadott formátumban; hibás formátum esetén hiba=igaz] Kódolása erősen nyelvfüggő. Függvény X_koord(Konst p:tpont):valós Függvény Y_koord(Konst p:tpont):valós Operátor =(Konst p,q:tpont):logikai Operátor +(Konst p,q:tpont):tpont Operátor (Konst p,q:tpont):tpont Operátor *(Konst p:tpont, a:valós):tpont [ p vektor az a skalárral való jobbról szorzata] 1 Az operátor-készítéshez következőket elegendő tudni C++ esetén: eredménytípus operator OPERÁTOR(paraméterek){ számítás return eredmény; } L. még itt: http://www.cs.elte.hu/linfo/prog/forditok/cpp/operator.htm 4

Operátor *(Konst a:valós, p:tpont):tpont [ p vektor az a skalárral való balról szorzata] Függvény Norma(Konst p:tpont):valós [euklideszi-normája, azaz az origótól számított szokásos távolsága] Operátor *(Konst p,q:tpont):valós [a p és a q vektorok skaláris szorzata, azaz <p,q>:=p.x*q.x+p.y*q.y] A skaláris szorzás problémamentes. Operátor (Konst p,q:tpont):valós [a definíciót l. alább] Ennek a műveletnek publikussá tételére, mint hamarosan kiderül, nincs igazán szükség. Egy későbbi fontos függvény megvalósítása miatt van szükség rá. Def- : : TPont 2 R p1p2:=p1.y*p2.x-p2.y*p1.x Megjegyzés: A p 1p 2 művelet a (,p 1,p 2,p 1+p 2) pontok által kijelölt paralelogramma előjeles területét adja meg. Tulajdonságai: (T0) Ha a p az 1. vagy a 4. síknegyedben van, akkor az o_p-re illeszkedő egyenes feletti minden r pontra a pr<0, alattiakra >0; ha a p a 2. vagy a 3. síknegyedben van, akkor pont fordítva, azaz pr>0, alatti pontokra <0. Azaz a o_p-t irányvektorként tekintve az általa kijelölt irányba nézve a balra eső pontokra pozitív, jobbra eső pontokra negatív e szorzat. 5

Biz.: (T1) pp=0 Biz.: pr=p.y*r.x-r.y*p.x>0 p.y*r.x>r.y*p.x ha p.x>0, akkor p.y*r.x/p.x>r.y, azaz r.x*iránytangens(p)>r.y ha p.x<0, akkor p.y*r.x/p.x<r.y, azaz r.x*iránytangens(p)<r.y pp= =p.y*p.x-p.y*p.x=0 (T2) p1p2=-p2p1 Biz.: p1p2=p1.y*p2.x-p2.y*p1.x= =-(-p1.y*p2.x+p2.y*p1.x)=-p2p1 (T3) (a*p1)(b*p2)=a*b*(p1p2) Biz.: (a*p1)(b*p2)=(a*p1.y)*(b*p2.x)-(b*p2.y)*(a*p1.x)= =a*b*(p1.y*p2.x-p2.y*p1.x)=a*b*(p2p1) (T4) (p1+q)p2=p1p2+qp2 Biz.: (p1+q)p2=(p1.y+q.x)*p2.y-p2.x*(p1.y+q.x)= =p1.y*p2.x+q.y*p2.x-p2.x*p1.y-p2.y*q.x= =p1p2+qp2 (T5) p1(p2+q)=p1p2+p2q Biz.: p1(p2+q)= (T2) =-(p2+q)p1= (T3) =-p2p1-qp1= (T2) =p1p2+p1q (T6) p=p=0 (=NullPont) Biz.: Megjegyzés: p=p.y*0-0*p.x=0 p=0*p.y-p.x*0=0 (T4)&(T5) a disztributív a + műveletre nézve (T3)&(T4)&(T5) a a vektortéren linearitást tartó leképezés 6

Függvény ForgásIrány(Konst p,q,r:tpont):{-1,0,+1} 2 [pqr balforgású 3, kollineáris 4, jobbforgású esetben] Def-KSz: KeresztSzorzat: TPont 3 R KeresztSzorzat(p,q,r):=(q-p)(r-p)= =(q.y-p.y)*(r.x-p.x)-(r.y-p.y)*(q.x-p.x) Állítás: Ha a KeresztSzorzat(p,q,r)>0, akkor a KeresztSzorzat(p,q,r )<0, ahol r az r tükörképe a p-re és q-ra illeszkedő p_q egyenesre nézve. Bizonyítás: (Def-KSz) KeresztSzorzat(p,q,r)=(q-p)(r-p) Az világos, hogy az r a p-re, q-ra illeszkedő p_q egyenes alatt van ha r-p a 0-ra és q-p-re illeszkedő 0_p-q egyenes alatt van (eltoltuk a p, q, r pontokat -p irányban: 0, q-p, r-p) (T0) (q-p)(r-p)>0 ha r-p a 0_q-p-re illeszkedő egyenes alatt van No már most az r éppen úgy helyezkedik el a p_q egyeneshez képest, mint az r -p a 0_q-p egyeneshez képest: azaz mindkét esetben a megfelelő egyenes felett lesz. (T0) (q-p)(r -p)<0 (q-p)(r -p)=keresztszorzat(p,q,r )<0 Állítás: a) Ha p=q vagy p=r vagy q=r, akkor KeresztSzorzat(p,q,r)=0. b) Ha pq és pr és qr, és p, q, r egy egyenesen vannak, akkor KeresztSzorzat(p,q,r)=0 Bizonyítás: a) KeresztSzorzat(p,p,r):=(p-p)(r-p)=(r-p)=0 (T6) KeresztSzorzat(p,q,p):=(q-p)(p-p)=(r-p)=0 (T6) KeresztSzorzat(p,r,r):=(r-p)(r-p)=0 (T1) 2 Elegánsabb, ha a TFordulás=(Balra,Rajta,Jobbra) felsorolástípussal valósítjuk meg, vagy legalábbis szimbolikus konstansként definiáljuk őket. 3 Azaz az óra járásával ellentétes irányúak. 4 Azaz egy egyenesre illeszkednek. 7

b) ha p, q, r egy egyenesen vannak, akkor r (azaz az r tükörképe a p_q-ra illeszkedő egyenesre nézve) r-rel egybe esik, így KeresztSzorzat(p,q,r)=KeresztSzorzat(p,q,r ) másrészt az előbbi állítás miatt KeresztSzorzat(p,q,r)=-KeresztSzorzat(p,q,r ) Vagyis KeresztSzorzat(p,q,r)=-KeresztSzorzat(p,q,r) Amiből már rögvest következik, hogy KeresztSzorzat(p,q,r)=0 Az utóbbi két állítás következménye, hogy a ForgásIrány-számítást alapozni lehet a KeresztSzorzat képletére. Írja meg a függvény algoritmusát! Függvény HibásE(Vált p:tpont):logikai [visszaadja a p pont hiba-flagjét, s közben alaphelyzetbe hozza] 8

o Szakasz Ábrázolás: Típus TSzakasz=Rekord(kezd,vég:TPont, hiba:logikai) 5 Asszociált műveletek szignatúrája: Operátor Kiírás(Konst s:tszakasz) Másnéven Ki: s [formázva jeleníti meg a pont koordinátáit] Kódolása erősen nyelvfüggő. Operátor Beolvasás(Konst s:tszakasz) Másnéven Be: s [beolvassa a szakaszt, megadott formátumban; hibás formátum esetén hiba=igaz] Kódolása erősen nyelvfüggő. Függvény KezdőPont(Konst s:tszakasz):tpont Függvény VégPont(Konst s:tszakasz):tpont Függvény Hossz(Konst s:tszakasz):valós Operátor =(Konst s1,s2:tszakasz):logikai [egyenlők-e, azaz hosszuk és irányuk megegyezik-e] Függvény Irányszög(Konst s:tszakasz):valós Állítás: Az s szakaszhoz jelölje R:=s.v-s.k:TPont irányvektort, akkor 1. Irányszög(sz)=/2, ha R.x=0 és R.y0 (az Y-tengelyen felfelé ) 2. Irányszög(sz)=3*/2, ha R.x=0 és R.y<0 (az Y-tengelyen lefelé ) 3. Irányszög(sz)=arcTg(R), ha R.x>0 és R.y0 (a 1. síknegyedben) 4. Irányszög(sz)= arctg(r ), ha R.x<0 és R.y0 (a 2. síknegyedben), ahol R :=(-R.x,R.y) [azaz az R 1. síknegyedbeli tükörképe ] 5. Irányszög(sz)=+arcTg(R), ha R.x<0 és R.y<0 (a 3. síknegyedben) 6. Irányszög(sz)=2* arctg(r ), ha R.x>0 és R.y<0 (a 4. síknegyedben), ahol R :=(R.x,-R.y) [azaz az R 1. síknegyedbeli tükörképe ] 5 A levezetésekben az egyszerűség kedvéért a kezd helyett k-t, a vég helyett v-t írunk. 9

Bizonyítás: Nyilvánvaló. Ezen állításból adódik már a függvény algoritmusa. Algoritmizálja! Függvény SzakaszonE(Konst s:tszakasz; r:tpont):logikai Állítás: p,q,rtpont egy egyenesen vannak ForgásIrány(p,q,r)=0 [=Rajta] Bizonyítás: Az ForgásIrány(p,q,r):=sgn(KeresztSzorzat(p,q,r))= =sgn((q.y-p.y)*(r.x-p.x)-(r.y-p.y)*(q.x-p.x)) korábbi definícióra építhetjük a bizonyítást. () p,q,rtpont egy egyenesen vannak R: r=p+*(q-p) KeresztSzorzat(p,q,r)=(q-p)(r-p)=(q-p)(p+*(q-p)-p)= =(q-p)(*(q-p))= (T3) =*(q-p)(q-p)= (T1) =*(q-p)(q-p)=0 () KeresztSzorzat(p,q,r)=0 (q.y-p.y)*(r.x-p.x)-(r.y-p.y)*(q.x-p.x)=0 (q.y-p.y)*(r.x-p.x)=(r.y-p.y)*(q.x-p.x) 1. ha (q.x-p.x)0 és (r.x-p.x)0 (q.y-p.y)/(q.x-p.x)=(r.y-p.y)/(r.x-p.x) Iránytangens(q-r)=Iránytangens(r-p) p,q,rtpont egy egyenesen vannak. 2. ha (q.x-p.x)=0 p_q-n átmenő egyenes az x-tengelyre merőleges és (r.x-p.x)=0 vagy (q.y-p.y)=0 2a.ha (r.x-p.x)=0 p_r-n átmenő egyenes az x-tengelyre merőleges p,q,rtpont egy egyenesen vannak. 2b. ha (q.y-p.y)=0 p=q p,q,rtpont egy egyenesen vannak. 10

Állítás: Ha p,q,rtpont egy egyenesen vannak és r.x[min(p.x,q.x)..max(p.x,q.x)], r.y[min(p.y,q.y)..max(p.y,q.y)] akkor az r a p_q szakaszon Bizonyítás: Nyilvánvaló. Ezen állításokból adódik már a függvény algoritmusa. Algoritmizálja! Függvény SzakaszPárMetszőE(Konst s1,s2:tszakasz):logikai Állítás: A szakaszok metszőség-vizsgálatát a ForgásIrány-vizsgálatra lehet alapozni. Bizonyítás: Az alábbi alapesetek képzelhetők el: Az alapesetek könnyedén felírhatók formálisan a Forgásirány fogalmára visszavezetve: a.) b.) c.) d.) ForgásIrány(s 1.k,s 1.v,s 2.k)=ForgásIrány(s 1.k,s 1.v,s 2.v) és ForgásIrány(s 2.k,s 2.v,s 1.k)=ForgásIrány(s 2.k,s 2.v,s 1.v) ForgásIrány(s 2.k,s 2.v,s 1.k)=ForgásIrány(s 2.k,s 2.v,s 1.v) és ForgásIrány(s 1.k,s 1.v,s 2.k)=-ForgásIrány(s 1.k,s 1.v,s 2.v) vagy ForgásIrány(s 1.k,s 1.v,s 2.k)=ForgásIrány(s 1.k,s 1.v,s 2.v) és ForgásIrány(s 2.k,s 2.v,s 1.k)=-ForgásIrány(s 2.k,s 2.v,s 1.v) SzakaszonE(s 1.k,s 1.v,s 2.k) vagy SzakaszonE(s 1.k,s 1.v,s 2.v) vagy SzakaszonE(s 2.k,s 2.v,s 1.k) vagy SzakaszonE(s 2.k,s 2.v,s 1.v) ForgásIrány(s 2.k,s 2.v,s 1.k)*ForgásIrány(s 2.k,s 2.v,s 1.v)<0 és ForgásIrány(s 1.k,s 1.v,s 2.k)*ForgásIrány(s 1.k,s 1.v,s 2.v)<0 11

Világos, hogy a c.) és a d.) eset jelenti a megoldást; azzal a feltétellel, hogy egyik szakasz sem elfajuló (egy pontból álló), és nem esnek egy egyenesre. Ebből az állításból adódik már a függvény algoritmusa. Algoritmizálja! Eljárás SzakaszPárMetszéspont(Konst s1,s2:tszakasz):tpont Allítás: Ha s1s2 és van metszéspontjuk, akkor az s1 s2 szakaszok r metszéspontja megkapható az alábbi lineáris vektoregyenlet megoldásával: r1(t1)=r2(t2), ahol ti[0..1] és ri(ti)=si.k+ti*(si.v-si.k) (i=1,2). Ekkor r:=r1(t1)=r2(t2). Bizonyítás: Mivel egy (=nem végtelen számú) metszéspontjuk van a feltételek szerint, ezért egyértelműen létezik r1s1-nek és r2s2-nek is olyan pontja, amelyek egybeesnek: r1=r2. Egy s szakasz belső pontjait befutja a következő függvény: r:[0..1]rr r(λ)=s.k+λ*(s.v-s.k) Tehát egyértelműen létezik olyan t1,t2[0..1], amelyre r1(t1)= s1.k+t1*(s1.v-s1.k) = s2.k+t2*(s2.v-s2.k) =r2(t2). A t1,t2 megkapható a fenti vektoregyenletet x- és y-koordinátára kifejtve, majd így mint két ismeretlenes lineáris egyenletrendszert megoldva. Ebből az állításból adódik már a függvény algoritmusa. Algoritmizálja! Világos, hogy az s1,s2 pontok elfajult voltát vizsgálni kell! Ekkor olyan pont kell legyen az eredmény, amelyen látszik az elfajultság, amelynek a hiba-mezője hibát jelez. Függvény MerőlegesekE(Konst s1,s2:tszakasz):logikai Állítás: Ha <s1.v-s1.k,s2.v-s2.k>=0, akkor s1 s2 merőlegesek egymásra, ahol <q,r>:=q.x*r.x+q.y*r.y [az a két vektor skaláris szorzata művelet]. Ezen állításból adódik már a függvény algoritmusa. Algoritmizálja! 12

Függvény Merőleges(Konst s:tszakasz, r:tpont):tszakasz [Uf: az s szakaszt tartalmazó egyenesre merőleges szakasz, amely kezdőpontja az r] Állítás: Az r-n átmenő s-re 6 merőleges egyenest a következő lépésekben kaphatjuk meg. Jelöljük az s végpontjait a rövidség kedvéért így: p:=s.k, q:=s.v, azaz a=p_q. 1. :=IránySzög(s) 2. Forgatásmátrix: FM():= 3. rr forgatása: rr:=(r-p)*fm() 4. rr projekciója az x-tengelyre: rr.y:=0 5. VisszaForgatásMátrix: FM(-) 6. rr visszaforgatása: p:=rr*fm(-)+p Kövesse a lépéseket a következő ábrán! 6 Pontosabban: az s-re illeszkedő egyenesre 13

Az r-n átmenő p_q-ra merőleges egyenes, p_q metszéspontjának (r V ) megszerkesztése. Ezen állításból adódik már a függvény algoritmusa. Algoritmizálja! Függvény HibásE(Vált sz:tszakasz):logikai [visszaadja az sz szakasz hiba-flagjét,majd alaphelyzetbe hozza] 14

o Pontsorozat Ábrázolás: Típus TPontSor=Rekord( db:egész, pontok:tömb(tpont) 7, hiba:logikai ) Asszociált műveletek szignatúrája: Konst UresPontSor:TPontSor(db:0,pontok:(),hiba:Hamis) Függvény ElemSzám(Konst ps:tpontsor):egész Függvény Elem(Konst ps:tpontsor, Konst i:egész):tpont [p=elem(ps,i): i[1..ps.db], akkor p a ps pontsort i. pontja, különben p.hiba=igaz] Eljárás ElemMódosít(Vált ps:tpontsor, Konst i:egész, p:tpont): [ps.pontok[i]=p: i[1..ps.db], különben ps.hiba=igaz] Eljárás Bővít(Vált ps:tpontsor, Konstans p:tpont) [bővíti a pontsort újabb ponttal a végénél és ps.db =ps.db+1] Eljárás Elhagy(Vált ps:tpontsor, Konstans i:egész) [elhagyja a pontsorból az i. pontot és ps.db =ps.db-1, ha i[1..ps.db]; különben ps.hiba=igaz] Függvény HibásE(Vált ps:tpontsor):logikai [hibás volt-e a ps; törli a hiba-flaget] 7 Dinamikusan változtatható méretű tömb, amely indexei: 1..ElemSzám. 15

1. FELADAT Készítse el a geometriai típusok teljes, egyesített modulját! Kiindulópontul töltse le a Geom modul C++ fájljainak kezdeményeit: Geom0.h, Geom0.cpp. Megjegyzés: a fentieket kibővítheti további olcsó műveletekkel. Nevezetesen: egy pont x-, ill. y-koordinátáját, egy szakasz kezdő-, ill. végpontját módosító műveletekkel. 2. FELADAT Készítse el a geometriai típusok moduljának egy lehetséges próbaprogramját! Egy kiinduló változatát megnézheti futás közben: Geometria_Proba0_mo.exe, A forrás torzója: és a Geometria_Proba0.cpp. 16