számítógépes grafika 2. gyakorlat
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 PresentationTRANSCRIPT
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!