Utolsó módosítás: Feladat egy kétváltozós valós függvény kirajzolása különféle megjelenítési módszerekkel.

Hasonló dokumentumok
Függvényábrázolás II.

Függvényábrázolás III.

Algoritmizálás és adatmodellezés tanítása 2. előadás

SZE, Doktori Iskola. Számítógépes grafikai algoritmusok. Összeállította: Dr. Gáspár Csaba. Felületmegjelenítés

Időjárási csúcsok. Bemenet. Kimenet. Példa. Korlátok. Nemes Tihamér Nemzetközi Informatikai Tanulmányi Verseny, 2-3. korcsoport

Eredmények, objektumok grafikus megjelenítése 3D felületek rajzoló függvényei

BME MOGI Gépészeti informatika 15.

EGYVÁLTOZÓS FÜGGVÉNYEK ÁBRÁZOLÁSA

Kép mátrix. Feladat: Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 2/35

Matematika III előadás

Kétváltozós függvény szélsőértéke

Lengyelné Dr. Szilágyi Szilvia április 7.

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

Függvények határértéke, folytonossága FÜGGVÉNYEK TULAJDONSÁGAI, SZÉLSŐÉRTÉK FELADATOK MEGOLDÁSA

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

SCILAB programcsomag segítségével

1. tétel Halmazok és halmazok számossága. Halmazműveletek és logikai műveletek kapcsolata.

BME MOGI Gépészeti informatika 18. Grafika, fájlkezelés gyakorló óra. 1. feladat Készítsen alkalmazást az = +

11. Előadás. 11. előadás Bevezetés a lineáris programozásba

Széchenyi István Egyetem. Informatika II. Számítási módszerek. 5. előadás. Függvények ábrázolása. Dr. Szörényi Miklós, Dr.

Követelmény az 5. évfolyamon félévkor matematikából

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

A félév során előkerülő témakörök

Kétváltozós függvények differenciálszámítása

Programozási nyelvek 3. előadás

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

First Prev Next Last Go Back Full Screen Close Quit

1. Oldja meg a z 3 (5 + 3j) (8 + 2j) 2. Adottak az A(1,4,3), B(3,1, 1), C( 5,2,4) pontok a térben.

Sergyán Szabolcs szeptember 21.

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

KOVÁCS BÉLA, MATEMATIKA I.

SZÁMÍTÓGÉPI GRAFIKA VÁGÁS

Gráfelmélet/Diszkrét Matematika MSc hallgatók számára. 3. Előadás

Kérdés Lista. A Magyarországon alkalmazott rajzlapoknál mekkora az oldalak aránya?

Algoritmusok helyességének bizonyítása. A Floyd-módszer

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával)

ELEMI PROGRAMOZÁSI TÉTELEK

KÉPFELDOLGOZÁS. 10. gyakorlat: Morfológiai műveletek, alakjellemzők

Géprajz - gépelemek. AXO OMETRIKUS ábrázolás

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Hatékonyság 2. előadás

Az egyenes egyenlete: 2 pont. Az összevont alak: 1 pont. Melyik ábrán látható e függvény grafikonjának egy részlete?

Navier-formula. Frissítve: Egyenes hajlítás

Az értékelés a következők szerint történik: 0-4 elégtelen 5-6 elégséges 7 közepes 8 jó 9-10 jeles. A szóbeli vizsga várható időpontja

Számítógépes döntéstámogatás. Genetikus algoritmusok

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

1.eredeti elképzelés 1.1

NT Matematika 9. (Heuréka) Tanmenetjavaslat

Algoritmusok bonyolultsága

XVIII. Nemzetközi Magyar Matematika Verseny

(Independence, dependence, random variables)

6. Függvények. Legyen függvény és nem üreshalmaz. A függvényt az f K-ra való kiterjesztésének

A szimplex algoritmus

Algoritmusok és adatszerkezetek I. 3. előadás

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

Háromszögek, négyszögek, sokszögek 9. évfolyam

Tanmenet a évf. fakultációs csoport MATEMATIKA tantárgyának tanításához

5. osztály. Matematika

Kartográfia, Térképészet 2. gyakorlat

Függvények szélsőérték vizsgálata

22. GRÁFOK ÁBRÁZOLÁSA

MATLAB. 5. gyakorlat. Polinomok, deriválás, integrálás

Gauss-Jordan módszer Legkisebb négyzetek módszere, egyenes LNM, polinom LNM, függvény. Lineáris algebra numerikus módszerei

MATLAB alapismeretek III.

Integr alsz am ıt as. 1. r esz aprilis 12.

Soros felépítésű folytonos PID szabályozó

Racionális számok: Azok a számok, amelyek felírhatók két egész szám hányadosaként ( p q

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)

Matematika III előadás

. 2 pont A 2 pont nem bontható. 3 Összesen: 2 pont. Összesen: 3 pont. A valós gyökök száma: 1. Összesen: 2 pont. Összesen: 2 pont

Kosárra dobás I. Egy érdekes feladattal találkoztunk [ 1 ] - ben, ahol ezt szerkesztéssel oldották meg. Most itt számítással oldjuk meg ugyanezt.

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

Géprajz - gépelemek. Előadó: Németh Szabolcs mérnöktanár. Belső használatú jegyzet 2

A Maxinery Kft. arculati kézikönyve

Bevezető feldatok. Elágazás és összegzés tétele

MATLAB alapismeretek IV. Eredmények grafikus megjelenítése: vonalgrafikonok

Németh László Matematikaverseny, Hódmezővásárhely március 30. A osztályosok feladatainak javítókulcsa

Többváltozós, valós értékű függvények

Többváltozós függvények Feladatok

Cellák. Sorok számozás Oszlop betű Cellák jelölése C5

Függvények ábrázolása

Matematika 8. osztály

I. feladatsor. 9x x x 2 6x x 9x. 12x 9x2 3. 9x 2 + x. x(x + 3) 50 (d) f(x) = 8x + 4 x(x 2 25)

III. Gráfok. 1. Irányítatlan gráfok:

Sorozatok határértéke SOROZAT FOGALMA, MEGADÁSA, ÁBRÁZOLÁSA; KORLÁTOS ÉS MONOTON SOROZATOK

A Föld középpontja felé szabadon eső test sebessége növekszik, azaz, a

Diszkrét matematika 2.

Programozási nyelvek 2. előadás

Mozgásvizsgálatok. Mérnökgeodézia II. Ágfalvi Mihály - Tóth Zoltán

Az építész- és az építőmérnök képzés szerkezeti és tartalmi fejlesztése

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Számítógép és programozás 2

Kétszemélyes játékok Gregorics Tibor Mesterséges intelligencia

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

Algoritmusok bonyolultsága

Koordináta-geometria feladatgyűjtemény

SZÁMÍTÓGÉPES ADATFELDOLGOZÁS

Algoritmizálás, adatmodellezés tanítása 2. előadás

7. 17 éves 2 pont Összesen: 2 pont

Átírás:

Utolsó módosítás: 2008.09.04. Kétváltozós függvények ábrázolása 1 Bevezetés Feladat egy kétváltozós valós függvény kirajzolása különféle megjelenítési módszerekkel. Például: szintvonalakkal, pontfelhővel, téglalapokkal, folytonos szakaszokkal, Az elvárásokat legjobban az alábbi, futás során keletkezett ábrasor fejezi ki, 1. ábra. Egy futási kép szintvonalas ábrázolás (2-irányú vonalakkal)

2. ábra. Egy futási kép szintvonalas ábrázolás (4-irányú vonalakkal) 3. ábra. Egy futási kép pontfelhővel 2

4. ábra. Egy futási kép téglalapokkal valamint egy próba: FV2MO.EXE. 2 Útban a megoldás felé 2.1 Jelölések Alapadatok: f függvénykapcsolat; f: D f R f, D f értelmezési tartomány = [1..MaxN] [1..MaxN] N N R f értékkészlet = [0..yMax] R 3 Módszerek algoritmusok Algoritmikus adatok és egyéb kellékek: Függvény f(konstans i,j:egész):valós Konstans Típus Konstans MaxN : Egész(50) SzvDb: Egész(5) TFvTábla = Tömb(1..MaxN,1..MaxN:Valós) TSzintVonalak = Tömb(1..SzvDb:Valós) szv : TSzintVonalak(0.2,0.4,0.6,0.8,1.0) fvt:tfvtábla [egy fv. gráfjának pontjai] sdb,odb:egész [rajzolandó sorok, oszlopok száma] sk,ok:egész [rácsháló sor-, oszlopköz mérete] ymax,ny:valós [fv. maximuma, nyújtási tényező] 3

3.1 Rajzolás merőleges szintvonalakkal A lényeg: minden (?!?) pont és jobb oldali szomszédja közé meghúzzuk a felező merőlegest, ha közöttük megy (legalább egy) szintvonal. Ugyanígy teszünk a pont és alatta levő szomszédjával is. (Így nem járhatunk el a jobb szélső oszlop és a legalsó sor pontjaival. Ezeket egyedileg kezeljük.) Eljárás SzintVonalasRajzolás1: i,j:egész 5. ábra. Megengedett 2 szintvonal. sk:=maxy Div sdb; ok:=maxx Div odb; Ciklus i=1-től sdb-1-ig Ciklus j=1-től odb-1-ig Ha szintvonal(fvt(i,j),fvt(i,j+1)) akkor Függőleges(i,j) Ha szintvonal(fvt(i,j),fvt(i+1,j)) akkor Vízszintes(i,j) Ciklus j=1-től odb-1-ig Ha szintvonal(fvt(sdb,j),fvt(sdb,j+1)) akkor Függőleges(sDb,j) Ciklus i=1-től sdb-1-ig Ha szintvonal(fvt(i,odb),fvt(i+1,odb)) akkor Vízszintes(i,oDb) Függvény Szintvonal(Konstans y1,y2:valós):logikai k:egész x:valós x:=szv(1)*ymax; k:=1 Ciklus amíg (x<y1) és (x<y2) [eldöntés tétel kiválasztás szerűen] k:+1; x:=szv(k)*ymax Szintvonal:=(x<y1) vagy (x<y2) Függvény vége. Eljárás Függőleges(Konstans i,j:egész): Szakasz(j*ok,MaxY-i*sk,j*ok,MaxY-i*sk+sk) 1 1 Ugyanez a Turbo grafikában: Line(x 1,y 1,x 2,y 2 ). 4

Eljárás Vízszintes(Konstans i,j:egész): Szakasz(j*ok,MaxY-i*sk,j*ok-ok,MaxY-i*sk) 3.2 Rajzolás 4-irányú szintvonalakkal A túl szögletes vonalakon úgy segítünk, hogy 45 fokos egyeneseket is megengedünk. Ekkor az adott pont és 3 szomszédját vesszük figyelembe. Világos, hogy a négy szomszédos pont közötti szakaszfelező pontok száma: 0, 2 vagy 4 lehet. A 4 esete sajnálatos módon kétféle szintvonal összekötést is jelenthet: egy keresztre, ill. egy rombuszra emlékeztető. Ráadásul a négy adat alapján nem is eldönthető, hogy melyik. 6. ábra. Megengedett szintvonalak 2 változat. Típus TSzintPontok=Tömb(1..4:Rekord(sor,oszlop:Egész)) Eljárás SzintVonalasRajzolás2: x:valós; db,i,j,k:egész; szint:tszintpontok sk:=maxy Div sdb; ok:=maxx Div odb Cilus i=1-től sdb-1-ig Cilus j=1-től odb-1-ig db:=0 [kiválogatás, cikluskibontással!] Ha szintvonal(fvt(i,j),fvt(i,j+1)) akkor szint(db).sor:=i*2; szint(db).oszlop:=j*2+1 Ha szintvonal(fvt(i,j),fvt(i+1,j)) akkor szint(db).sor:=i*2+1; szint(db).oszlop:=j*2 Ha szintvonal(fvt(i+1,j),fvt(i+1,j+1)) akkor szint(db).sor:=i*2+2; szint(db).oszlop:=j*2+1 Ha szintvonal(fvt(i,j+1),fvt(i+1,j+1)) akkor szint(db).sor:=i*2+1; szint(db).oszlop:=j*2+2 5

Elágazás db=2 esetén Egyenes(szint) db=4 esetén Kereszt(szint) 2 Eljárás Egyenes(Konstans szint:tszintpontok): Szakasz(szint(1).oszlop*ok Div 2, MaxY-szint(1)*sk Div 2, szint(2).oszlop*ok Div 2, MaxY-szint(2).sor*sk Div 2) Eljárás Kereszt(Konstans szint:tszintpontok): s1,o1,s2,o2:egész s1:=maxy-szint(1).sor*sk Div 2; o1:=szint(1).oszlop*ok Div 2 s2:=maxy-szint(2).sor*sk Div 2; o2:=szint(2).oszlop*ok Div 2 s3:=maxy-szint(3).sor*sk Div 2; o3:=szint(3).oszlop*ok Div 2 s4:=maxy-szint(4).sor*sk Div 2; o4:=szint(4).oszlop*ok Div 2 Szakasz(o1,s1,o3,s3); Szakasz(o2,s2,o4,s4) 3.3 Pontfelhős rajzolás A lényeg: minden y-értékhez a nagyságával arányos sűrűségű felhődarabot generálunk. A felhődarab sk*ok pixelméretű. E pixelek közül kell megfelelő számút kigyújtani. Kétféle elképzelés lehet erre. 1) fvt(i,j)/(max (ii,jj) fvt(ii,jj))*sk*ok darab kigyújtott pont legyen; vagy 2) az sk*ok pixel mindegyike fvt(i,j)/(max (ii,jj) fvt(ii,jj)) valószínűséggel legyen kigyújtva. Az első pontos tud lenni, ha ügyelünk a pontkiválasztás egyértelműségére, de a telítéshez közel túl sok ismétlődést kíván. A második csak várhatólag ad jó eredményt, de konstans idejű. Az alábbi algoritmus az első egy variációja, amely nem ügyel a pontkiválasztás egyediségére, de azzal minimalizálja problémát, hogy 50%-ban maximálja a kitöltést. (Az 50% tartozik a maximális függvényértékhez.) Eljárás PontFelhősRajzolás: db,i,j,ii,jj,k:egész sk:=maxy Div sdb; ok:=maxx Div odb Ciklus i=1-től sdb-ig Ciklus j=1-től odb-ig db:=kerekít(sqr(fvt(i,j)/ymax)*sk*ok) Div 2 Ciklus k=1-től db-ig ii:=random(sk); jj:=random(ok) Pont(j*ok+jj,MaxY-i*sk+ii,1) 2 A Rombusz(szint) eljáráshívás is elképzelhető. A Kereszt-et választjuk, mert az csak 2 vonalat jelent. 6

3.4 Téglalapos rajzolás Lényege: a felület minden pontjának megfeleltetünk egy színezett oszlopot, amelynek magassága a pont magassága lesz. A térbeliséget a téglalapok axonometrikus elhelyezésével érjük el. Vagyis az (i,j) indexű fvt(i,j) magasságú ponthoz egy (o,s0) talppontú, fvt(i,j) magasságú oszlopot rendelünk. Ahol o o:=i*sk+j*ok o s:=kerekít(maxy-i*sk-fvt(i,j)*ny) o s0:=kerekít(maxy-i*sk) Mivel az axonometrikus ábrázolás esetén az egyes oszlopok takarhatják egymást, a kirajzolást hátulról kezdve végezzük. Annak érdekében, hogy az egyes oszlopok ne olvadjanak össze, árnyékkal operálunk: ax,ay jelentse az árnyék kilógását az oszlop alól balra, ill. felfelé. Hogy a megjelenítést ki lehessen próbálni a különféle árnyékkal, az eljárást velük paraméterezzük. Az oszlopok magasságának maximumát jelöljük MaxMag-gal, amit ismertnek veszünk. Eljárás TéglásRajzolás(ax,ay: Egész): i,j,o,s,s0:egész sk:=(maxy-maxmag) Div sdb; ok:=maxx Div (sdb+odb+1) Ciklus i=sdb-től 1-ig visszafelé Ciklus j=odb-tól 1-ig visszafelé o:=i*sk+j*ok; s:=kerekít(maxy-i*sk-fvt[i,j]*ny) s0:=kerekít(maxy-i*sk) OszlopSzin(Fekete) 3 ; Oszlop(o+ax-ok,s-ay,o+ax,s0-ay) OszlopSzin(Kék); Oszlop(o-ok,s,o,s0) 4 A keretprogram Lásd Fv2Ker.htm, FV2KER.PAS. 3 Turbo grafikában ugyanez: SetFillStyle(SolidFill,Black). 7