Het is niet mogelijk om een vorm te roteren. Het assenstelsel kan wel roteren. (zie regel 21 t/m 27 voor de code)
Het groene poppetje roteert in het (0,0) punt om zijn as. Het (0,0) punt bevindt zich linksboven.
Met translate(x+2*nx, y) wordt dit (0,0) punt verplaatst naar het punt (x+2*n, y)
Dankzij pushMatrix() en popMatrix() wordt het (0,0) punt alleen verplaatst voor het groene poppetje,
anders zouden de andere poppetjes ook verplaatsen en dat is niet de bedoeling.
De teller i zorgt er voor dan het poppetje in stappen van 1 graad roteerd.
Als het poppetje rond is (360 graden gedraaid) begint de teller weer bij 1 (zie regel 25)
Binnen pushMatrix() en popMatrix() moet je na translate altijd eerst de rotate functie aanroepen
en daarna de functie met de te roterende vorm!!
De schets maakt ook gebruik van een object van de class "Ruitjes" met een constructor met de vier argumeten nx, ny, x en y
Ruitjes ruitjespap;
float x;
float y;
float nx;
float ny;
float i;
void setup() {
size(960, 540);
x = width/2;
y = height/2;
nx = height/20; //nx is de lengte van het vakje
ny = height/20; //ny is de hoogte van het vakje
ruitjespap = new Ruitjes(nx, ny, x, y);
}
void draw() {
background(#E6FBFF);
ruitjespap.display();
vrouw(x-6*nx, y, nx, ny/2, color(255,0, 0, 100));
pushMatrix();
translate(x+2*nx, y);
rotate(radians(i));
i = i + 1;
if (i > 360) i = 0;
// het groene poppetje staat links boven in het (0,0) punt
vrouw(0, 0, nx, ny, color(0, 255, 0, 100));
popMatrix();
vrouw(x+9*nx, y, nx*0.5, ny*1.5, color(0, 0, 255,100));
}
void vrouw(float x, float y, float nx, float ny, color c)
{
fill(255, 255, 0,100);
strokeWeight(2);
ellipse(x, y-4*ny, 2*nx, 2*ny); //hoofd
rect(x-nx, y-3*ny, 2*nx, 3*ny); //lichaam
rect(x-2*nx, y-3*ny, nx, 3*ny); //arm li
rect(x+nx, y-3*ny, nx, 3*ny); //arm re
rect(x-nx, y+2*ny, nx/2, 2*ny); //li been
rect(x+nx/2, y+2*ny, nx/2, 2*ny); //Re been
fill(c); //quad (is het jurkje) krijgt de kleur
quad(x-2*nx, y+2*ny, x-nx, y, x+nx, y, x+2*nx, y+2*ny); //jurk
}