számítógépes grafika 2. gyakorlat

24
Számítógépes Grafika 2. gyakorlat Programtervező informatikus (esti) 2011/2012 őszi félév

Upload: maddy

Post on 05-Jan-2016

34 views

Category:

Documents


0 download

DESCRIPTION

Programtervező informatikus (esti) 2011/2012 őszi félév. Számítógépes Grafika 2. gyakorlat. Utasítások. PImage: .gif, .jpg, .tga és .png képek megjelenítését szolgáló osztály A .width és .height mezők az adott kép szélességét és magasságát tárolják A .pixels tömbje pedig a színeket. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Számítógépes Grafika 2. gyakorlat

Számítógépes Grafika2. gyakorlat

Programtervező informatikus (esti)2011/2012 őszi félév

Page 2: Számítógépes Grafika 2. gyakorlat

Utasítások

PImage:

.gif, .jpg, .tga és .png képek megjelenítését szolgáló osztály

A .width és .height mezők az adott kép szélességét és magasságát tárolják

A .pixels tömbje pedig a színeket

Page 3: Számítógépes Grafika 2. gyakorlat

Utasítások

loadImage(eleres): visszaad egy PImage-t, ami az első paraméterben megadott elérési útvonalon található (lehet URL is!)

image(img, x, y, width, height): kirajzol

Az img nevű PImage típusú képet kifeszíti az (x, y, width, height) által meghatározott téglalapra (ha kell nagyít/kicsinyít)

Page 4: Számítógépes Grafika 2. gyakorlat

Utasítások

A pixels[] tömb használata a következő:

Először img.loadPixels() függvényhívás kell, ami feltölti a pixels[] tömböt

Utána használhatjuk a img.pixels[]-t a kép pixeleinek lekérdezésére és módosítására (1D-s a tömb!)

Végül ha módosításokat végeztünk, akkor img.updatePixels()-t kell hívnunk

Page 5: Számítógépes Grafika 2. gyakorlat

Példa

PImage i ;

void setup() {

size(600,600) ;

i = loadImage("http://hapakj.web.elte.hu/szgesti/images/elte.png") ;

}

void draw() {

image(i,10,10) ;

}

Page 6: Számítógépes Grafika 2. gyakorlat

Feladat 1

• Töltsetek be egy tetszőleges képet a netről

• Bal kattintás jelölje ki a kép bal felső pozícióját

• Jobb kattintás pedig a jobb alsót

Page 7: Számítógépes Grafika 2. gyakorlat

Adatszerkezetek

A Processing támogatja alapból a következő tároló típusokat:ArrayListHashMapArraystb…

Használatuk a Java referencia szerint

Page 8: Számítógépes Grafika 2. gyakorlat

Adatszerkezetek

PVector:2 vagy 3 dimenziós vektorAdatmezők: x, y, zEljárások: set(), get(), mag(), add(), sub(),

normalize(), …

Page 9: Számítógépes Grafika 2. gyakorlat

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);}

Page 10: Számítógépes Grafika 2. gyakorlat

Feladat 2

• Írjuk programot, ami minden bal egérgombbal történő kattintást rögzít és hozzáadja egy listához.

• Minden ponthármasra rajzoljunk ki egy háromszöget.

Page 11: Számítógépes Grafika 2. gyakorlat

Fájl output

PrintWriter:Fájlba kiírásraHasználat: StreamWriter w = createWriter(“file.txt”);

Eljárások: print() println() flush() close()

Page 12: Számítógépes Grafika 2. gyakorlat

Fájl input

• String[] loadStrings(<file_name>):Betölti a paraméterben kapott fájlt soronként,

visszaadja a beolvasás eredményétHasználat:•String lines[] = loadStrings("szoveg.txt");

Page 13: Számítógépes Grafika 2. gyakorlat

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,“,;”);

Page 14: Számítógépes Grafika 2. gyakorlat

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);

Page 15: Számítógépes Grafika 2. gyakorlat

Feladat 3

Az „s” billentyű lenyomására lehessen fájlba menteni az aktuális állapotot!

Az „l” billentyű segítségével pedig töltsük vissza a legutóbbit!

Page 16: Számítógépes Grafika 2. gyakorlat

Szövegkirajzolás

PFont:A Processing karakterkészlet osztályaHasználat: PFont fnt = createFont("Arial", 12);

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)

Page 17: Számítógépes Grafika 2. gyakorlat

Szövegkirajzolás

textAlign(xAlign, yAlign): vízszintes és függőleges szövegigazítás, lehetséges értékei LEFT, CENTER, RIGHT

loadFont(fájlnév): külső fájlból tölthetünk be vele karaterkészletet

PFont fnt = loadFont("font.flw");

Page 18: Számítógépes Grafika 2. gyakorlat

Példa

void setup() { size(600,600); PFont fnt = createFont("Arial",20) ; textFont(fnt) ; }

void draw() { text("Helló",100,100) ;}

Page 19: Számítógépes Grafika 2. gyakorlat

Feladat 4

Minden kattintásra annak helyére írjátok ki a kattintás gombját és pozicióját.

Page 20: Számítógépes Grafika 2. gyakorlat

Osztályok

Osztályok definiálása szokásos módon:

class OsztNev{ void fv() {...} int i;}

Page 21: Számítógépes Grafika 2. gyakorlat

Osztályok

Az osztály egy példányának létrehozása szintén:

OsztNev o = new OsztNev();

Page 22: Számítógépes Grafika 2. gyakorlat

Feladat

• Írjatok egy PattogoKor osztályt!

• Legyen szín és sugár jellemzője

• Szóköz billentyű megnyomására jöjjön létre egy új pattogó kör, ami a képernyő keretein belül pattog! (véletlen sugár és szín attributumokkal)

• NEHEZÍTÉS (Házi Feladat): A körök egymásról is pattanjanak vissza

Page 23: Számítógépes Grafika 2. gyakorlat

Feladat

Csináljunk egy Teglalap osztályt! Legyen pozíció és szélesség/magasság, szin adattagja

Szóköz lenyomására jelenjen meg egy a képernyőn (véletlen helyen, véletlen attributumokkal)

A téglalap közepére legyen beleírva színe RGB kódja, és a poziciója

A téglalap kirajzolásáért annak Draw() metódusa feleljen

Page 24: Számítógépes Grafika 2. gyakorlat

Feladat / Házi feladat• Jobb gombbal való kattintásra változzon a

téglalap kapjon új véletlen színt

• Bal egérgombbal lehessen a kiválasztott téglalapot előtérbe hozni

• Legyen lehetőség a bal egérgombbal a téglalap vonszolására

• Törekedjetek az OOP elvű megvalósításra!