Számítógépes Grafika 3. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.

Slides:



Advertisements
Hasonló előadás
Programozási feladatok
Advertisements

OpenGL 2. gyakorlat Hapák József
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Számítástechnika Levelezőknek
Cells(sor száma, oszlop száma)
Adatbányászati technikák (VISZM185)
Számítógépes Grafika 6. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
JavaScript.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
Fájlkezelés, IO Kivételkezelés Belső osztályok
Abstract osztályok és interface-ek Beolvasás és kiíratás 7. gyakorlat.
Fejlett programozási technikák II.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek.
Követelmények Bevezetés a Javába Első java program írása Dokumentációk
Parancssori argumentumok Primitív típusok Operátorok Vezérlési szerkezetek Tömbök Ürmös Beáta, 2011.
STÍLUSOK Tulajdonságok és értékek. Színek megadási módjai H1 {color: #CCF150} H1 {color: rgb(204,241,80)} H1 {color: rgb(80%,95%,30%)} H1 {color: red}
Az objektum-orientált tervezési alapelvek kritikai vizsgálata
A HTML alapjai Havlik Barnabás Készítette:
Számítógépes grafika OpenGL 1. gyakorlat.
Web-grafika (VRML) 10. gyakorlat Kereszty Gábor. Script típusok Elemi típusok: szám: egész vagy lebegőpontos – int / float – 1 / 1.1 string: ‘Hello World!’
Készítette: Keszthelyi Zsolt
Számítógépes Grafika 1-2. gyakorlat
Az Input-Output használata Az input-outputot a nyelv előredefiniált csomagokon keresztül valósítja meg. Mindegyik csomag az Ada alapcsomag gyereke.
6. előadás Hatókör, láthatóság, élettartam. Változók leképzése a memóriára. Blokkszerkezetes nyelvek. Kivételkezelés.
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
DirectX a grafika laboron kívül. Mire lesz szükség Itt vannak a szükséges include és lib: iles/DXMinimalPack.zip.
Lénárt Anett egyetemi adjunktus - PTE PMMK Rendszer- és Szoftvertechnológia Tanszék Előadás JavaScript Tananyag: W eb - programozás.
A JAVA TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség.
HTML oldal felépítése Készítette: Pataki Arnold
Számítógépes Grafika 1. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
Operációs rendszerek gyakorlat 6. Gyakorlat Vakulya Gergely.
Operációs rendszerek gyakorlat 9. Gyakorlat Vakulya Gergely.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Számítógépes Grafika 2. gyakorlat Programtervező informatikus (esti) 2011/2012 őszi félév.
Számítógépes Grafika 1-2. gyakorlat Programtervező informatikus (esti)‏ 2011/2012 őszi félév.
Számítógépes Grafika Programtervező informatikus (esti)‏ Textúrázás.
Számítógépes Grafika Megvilágítás Programtervező informatikus (esti)‏
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Készítette: Lipp Marcell
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
1 Verseny 2000 gyakorlat ASP. 2 Gyakorlat Web létrehozása: Frontpage 2000 New Web:
Számítógépes grafika DirectX 5. gyakorlat. Emlékeztető Háromdimenziós alapok befejezése Textúrázás.
Számítógépes Grafika 4. gyakorlat Programtervező informatikus (esti)‏ 2011/2012 őszi félév.
Számítógépes Grafika 7. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
Java programozási nyelv Filekezelés
Komoróczy Tamás 1 Java programozási nyelv A nyelv alapjai.
Java programozási nyelv Adatbekérés konzolról
Az algoritmuskészítés alapjai
1 Mivel foglalkozunk a laborokon? 7. hét: Do-Loop-Until Do-Until-Looptömbök Function 7. hét: Do-Loop-Until és Do-Until-Loop ciklusok. Egy indexes tömbök,
Számítógépes Grafika 6. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
Illés Zoltán ELTE Informatikai Kar
Számítógépes Grafika 4. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
Vizualizáció és képszintézis Sugárkövetés (Dart + GLSL) Szécsi László.
Számítógépes grafika OpenGL 5. gyakorlat.
A 2. géptermi beszámoló VBA anyagának összefoglalása
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok Excel alapok: Excel alapok: Cellahivatkozás, munkalapfüggvény, diagram varázsló, trendvonal 2.
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Excel programozás (makró)
Weboldalba ágyazott interaktív feladatok GeoGebra módra Papp-Varga Zsuzsanna ELTE IK Média- és Oktatásinformatika Tanszék
Számítógépes Grafika 5. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
1 Függvények használata – az első függvénynél a formulát háromszor be kell írni, rendre az x, x+h, x-h argumentumokkal, – a második függvénynél az új (feltételes.
Az 5,6,7 laborok VBA anyagának összefoglalása
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 6. gyakorlat.
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok Excel alapok: Excel alapok: Cellahivatkozás, munkalapfüggvény, diagram varázsló, trendvonal 2.
JavaScript a böngészőben
Python alapok Vincellér Zoltán.
Előadás másolata:

Számítógépes Grafika 3. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév

Információk Gyakorlati diák:

Emlékeztető Röviden megnéztük az osztályokat – erre még később visszatérünk Alacsony szintű utasításokkal megnéztük milyen magasabb szintű parancsokat implementálni Esetünkben pontkirajzolással szakaszkirajzolást Most a múlt órai algoritmust finomítjuk

Miből indulunk ki? A múlt óraihoz hasonló vonalhúzó kódból: sti/03/VonalhuzoAlap.zip sti/03/VonalhuzoAlap.zip Ezt a Dokumentumok/Processing-be kell kitömöríteni

VonalhuzoAlap int dragStartX, dragStartY; int dragEndX, dragEndY; void setup() { size(400, 400); } void draw() { background(220); line(dragStartX, dragStartY, dragEndX, dragEndY); }

VonalhuzoAlap void mousePressed() { if (mouseButton == LEFT) { dragStartX = dragEndX = mouseX; dragStartY = dragEndY = mouseY; } void mouseDragged() { if (mouseButton == LEFT) { dragEndX = mouseX; dragEndY = mouseY; }

Általánosított Bresenham function BresGen(x0, y0, x1, y1) boolean steep := abs(y1 - y0)>abs(x1 - x0) if steep then swap(x0, y0) swap(x1, y1) if x0 > x1 then swap(x0, x1) swap(y0, y1) int deltax := x1 - x0 int deltay := abs(y1 - y0) float error := 0 float deltaerr := deltay / deltax

Általánosított Bresenham int ystep := 1 if y0 > y1 then ystep := -1 int y := y0 for x from x0 to x1 if steep then point(y,x) else point(x,y) error := error + deltaerr if error >= 0.5 then y := y + ystep error := error - 1.0

Feladat 1 Készítsük el az általánosított Bresenham eljárást Processing-ben!

Probléma Lebegőpontos számokkal történő műveletek helyett jó lenne egész számokon dolgozni Az összes nem egész számunkat szorozzuk be deltax-szel! Probléma: error ≥ 0.5 Fordítsuk meg az error jelentését és indítsuk deltax/2-ről!

Bresenham optimalizált function BresOpt(x0, y0, x1, y1) boolean steep := abs(y1-y0) > abs(x1-x0) if steep then swap(x0, y0) swap(x1, y1) if x0 > x1 then swap(x0, x1) swap(y0, y1) int deltax := x1 - x0 int deltay := abs(y1 - y0)

Bresenham optimalizált int error := deltax / 2 int ystep := 1 int y := y0 if y0 > y1 then ystep := -1 for x from x0 to x1 if steep then plot(y,x) else plot(x,y) error := error – deltay if error < 0 then y := y + ystep error := error + deltax

Házi Feladat Írjuk meg a Bresenham optimalizált formáját!

Bresenham Az eredeti 1962-es kód: nham/bresenham.s nham/bresenham.s Nagyon hatékony

Adatszerkezetek A Processing támogatja alapból a következő tároló típusokat: –ArrayList –HashMap ArrayList használata pl.: a/util/ArrayList.html a/util/ArrayList.html

ArrayList példa ArrayList al = new ArrayList(); al.add(new PVector(3, 2)); al.add(new PVector(35, 22)); for (int i=0; i<al.size(); ++i) { PVector p = (PVector)al.get(i); print(p); }

Feladat 2 Írjuk programot, ami négy pont kijelölése után összeköti őket egy négyszöggé A bal egérgombbal adjunk hozzá új pontot a pontlistához Négynél ne legyen több pont egyszerre A négyszögünk csúcsait kis, 10 pixel átmérőjű körök jelezzék (strokeWeight + point(x,y)) 1 vastagságú szakaszok legyenek köztük

Feladat 3 Az előző négyszögrajzoló programot bővítsük ki az alakzatkitöltés lehetőségével:

Kitöltés void fld(x, y, c, bg) if pixel[x,y] = bg AND x > 0 AND y > 0 AND x < width AND y < height then pixel[x,y] := c flt(x+1, y, c, bg) flt(x-1, y, c, bg) flt(x, y+1, c, bg) flt(x, y-1, c, bg)

Probléma Mi lehet az oka? Alakzatkitöltésre más, hatékonyabb algoritmusok vannak

Szövegkirajzolás PFont: –A Processing karakterkészlet osztálya –Használat: PFont font = loadFont(“fnt.vlw"); textFont(PFont): –Az aktuális kirajzolási karakterkészletet a paraméterben kapottra módosítja text(str, x, y[, w, h, z]) textSize(int)

Példa void setup() { size(400, 400); PFont font = loadFont("fnt.vlw"); textFont(font); } void draw() { text("Helló", 15, 30); }

Feladat 4 Az előző programban a négyszögek csúcspontjainak rajzoljuk ki a csúcspontok mellé

Fájl output PrintWriter: –Fájlba kiírásra –Használat: StreamWriter w = createWriter(“file.txt”); –Eljárások: print() println() flush() close()

Feladat 5 A létrejövő négyszögek koordinátáit írjuk ki egy fájlba (negyszogek.txt)

Fájl input String[] loadStrings( ) : –Betölti a paraméterben kapott fájlt soronként, visszaadja a beolvasás eredményét –Használat: String lines[] = loadStrings("szoveg.txt");

Szövegek feldolgozása String[] split(str, delim): –String gy = "alma, korte”; String[] l = split(gy, ','); String[] splitTokens(str, delims): –String gy = "alma, korte; eper”; String[] l = splitTokens(gy,“,;”);

String osztály Eljárások Java-ból ami ismerős: –substring(int fi, int li); –trim() –… Számmá alakítás: –parseInt(s); –parseFloat(s);

Feladat 6 Az „l” billentyű lenyomásával töltődjön be a fájlból az összes elmentett négyszögkoordináta és rajzoljuk ki őket