Monimutkaisten kuvioiden liikuttelu

Entä jos halutaan ohjata monimutkaisempaa kuviota, esimerkiksi kuutiota. Tällöin kannattaa liikutella koko koordinaatistoa translate(a,b); -komennolla, missä muuttujalla a ilmaisee kuvion paikan vaakasuunnassa ja muuttuja b ilmaisee kuvion paikan pystysuunnassa. Tehdään kokonainen ohjelma, joka liikuttaa kuutiota. Lisätään ohjelmaan vielä ehto, että kuviota liikutellaan vain, jos näppäin on pohjassa. Kokonainen ohjelma näyttää tältä.

// Ohjelman tehnyt e-Oppi Oy
// 16.1.2018
int a = 100; // Kuvion aloituskohta vaakasuunnassa int b = 100; // Kuvion aloituskohta pystysuunnassa void setup () { size(600,600); // Ikkunan koko stroke(0,0,255); // Reunaviivan väri sininen strokeWeight(10); // Reunaviivan paksuus 10 } void draw () { background(255); // Tyhjennä tausta
if (keyPressed == true) { // Jos näppäin on pohjassa if ((keyCode == RIGHT) && (key == CODED)) { // Jos oikealle a++; // Niin kasvata laskuria a } if ((keyCode == LEFT) && (key == CODED)) { //Jos vasemmalle a--; // Niin pienennä laskuria a } if ((keyCode == DOWN) && (key == CODED)) { // Jos alas b++; // Niin kasvata laskuria b } if ((keyCode == UP) && (key == CODED)) { // Jos ylös b--; // Niin pienennä laskuria b }
}
pushMatrix(); // Koordinaatisto muistiin translate(a,b); // Liikuta koordinaatistoa line(100,100,200,100); line(200,100,250,50); line(100,200,200,200); line(200,200,250,150); line(100,100,100,200); line(200,100,200,200); line(150,50,150,150); line(250,50,250,150); line(150,50,250,50); line(150,150,250,150); line(100,100,150,50); line(100,200,150,150);
popMatrix(); // Palauta koordinaatisto muistista }


Käytännössä monimutkainen kuvio laitetaan seuraavan rakenteen sisään.

pushMatrix();
translate(x,y);
// Kuvion piirtokomennot tähän
popMatrix();