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

Post on 05-Jan-2016

34 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

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

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

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

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)

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

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

}

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

Adatszerkezetek

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

Használatuk a Java referencia szerint

Adatszerkezetek

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

normalize(), …

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 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.

Fájl output

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

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

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

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 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!

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)

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

Példa

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

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

Feladat 4

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

Osztályok

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

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

Osztályok

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

OsztNev o = new OsztNev();

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

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

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!

top related