statisch push pop

 

 

 

 

 

 

 

 

statische schets met de rotate functie

 

 

 

 

 

 

 

statische schets met de rotate functie

 

 

 

 

 

 

 

schets met aanpassingen in de translate() functie

regel 64 translate(x,y) uitgeschakeld,
regel 63 translate(x-4*n, y) ingeschakeld
 
regel 71 translate(x,y) uitgeschakeld

regel 70 translate(x+4*n, y); ingeschakeld

 
 

 

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