statische schets met rotate(); terug naar de inleiding
Regel 10 t/m 25 is de code voor het ruitjespapier en de rode lijnen van het assenstelsel
Regel 29 t/m 53 is de code voor de vier bogen ,met de arc() functie, in de vier kwadranten
De bogen zijn met rotate -45 of + 45 graden gedraait (PI/4 = 45 graden)
Je kan in een schets de bogen niet draaien maar wel het coordinatenstelsel.
Om een boog te laten draaien moet het draaipunt in het (0,0) punt van het coordinatenstelsel staan.
In processing bevindt het (0,0) punt zich linksboven. Met translate verplaatst dit (0,0) punt naar het gewenste punt in het venster.
Door deze verpaatsing van het assenstelsel komen de andere vormen op een andere plaats te staan.
Dit probleem oplossen met pushMatrix(); en popMatrix(); die er voor zorgen dat het assenstelsel telkens weer in de oorspronkelijke toestand komt.
zie regels 31 t/m 35: De code staat tussen pushMatrix(); en popMatrix();
met translate(x-3*n, y-3*n) is het (0,0) punt verplaatst naar het punt x-3*n, y-3*n.
Met arc(0 ,0, 2*n, 3*n, radians(180), radians(360)); staat de boog in het (0,0) punt.
Zie voor het begrip ook het artikel simpele oefening de code onder het kopje Translate(n,n) weergegeven op ruitjespapier
size(960,540);
//fullScreen();
float x = width/2;
float y = height/2;
float n = height/10;
background(#E6FBFF);
// horizontale lijntjes
for (float i = 0; i < height/2; i = i + n) {
line(0, height/2+i, width, height/2+i); //naar beneden
line(0, height/2-i, width, height/2-i); //naar boven
}
//verticale lijntjes
for (float i = 0; i << width/2; i = i + n) {
line(width/2+i, 0, width/2+i, height); //naar rechts
line(width/2-i, 0, width/2-i, height); //naar links
}
//de rode x en y as
stroke(255, 0, 0);
line(0, height/2, width, height/2);
line(width/2, 0, width/2, height);
//----------------------hier komt de tekening--------------//
//het tekenen van de 4 bogen acr()
strokeWeight(2);
stroke(0);
noFill();
pushMatrix();
translate(x-3*n, y-3*n);
rotate(-PI/4);
arc(0, 0, 2*n, 3*n, radians(180), radians(360));
popMatrix();
pushMatrix();
translate(x+3*n, y-3*n);
rotate(PI/4);
arc(0, 0, 2*n, 3*n, radians(180), radians(360));
popMatrix();
pushMatrix();
translate(x+3*n, y+3*n);
rotate(-PI/4);
arc(0, 0, 2*n, 3*n, radians(0), radians(180));
popMatrix();
pushMatrix();
translate(x-3*n, y+3*n);
rotate(PI/4);
arc(0, 0, 2*n, 3*n, radians(0), radians(180));
popMatrix();
//het tekenen van de ellipsen
ellipse(x, y, n, 5*n);
ellipse(x, y, 8*n, n);
pushMatrix();
// translate(x-4*n, y);
translate(x, y);
rotate(PI/4);
ellipse(0, 0, 5*n, n);
popMatrix();
pushMatrix();
// translate(x+4*n, y);
translate(x, y);
rotate(-PI/4);
ellipse(0, 0, 5*n, n);
popMatrix();
//De rode draaipunten van de bogen
strokeWeight(n/5);
stroke(255, 0, 0);
point(x-3*n, y-3*n);
point(x+3*n, y-3*n);
point(x+3*n, y+3*n);
point(x-3*n, y+3*n);