header

Eenvoudig voorbeeld met roterende en bewegende poppetjes                             terug naar de inleiding
 
 
 

Pop pop1; 
Pop pop2; 
Pop pop3; 
Ruitjes ruit; 
float x; 
float y; 
float n; 
float i; 
 
void setup() {  
  size(960, 540);  
  //  fullScreen(); 
  x = width/2; 
  y = height/2; 
  n = height/10; 
  ruit = new Ruitjes(x, y, n); 
 
  //pop1 links plaatsen. dit uitrekenen met n = height/10 = 54 
  //aantal vakjes op de x as = 960/54 = 17.77777 
  //dit delen door 2 = 8.888888 als je 9 invul beweegt het poppetje niet  
  //want het poppetje bevindt zich buiten de range (x<0), 8.8 invullen werkt wel 
 
  pop1 = new Pop(x-8.8*n, y-n/2, n); 
  pop2 = new Pop(0, 0, n/2); 
  pop3 = new Pop(x+5*n, y, n*1.5); 
}  
 
void draw() {  
  background(#E6FBFF);   
  ruit.ruitjespapier(); 
  pop1.display(); 
  pop1.bewegen();   
  println(pop1.x); 
 
  pushMatrix(); 
  translate(x-5*n, y-3*n); 
  rotate(radians(i)); 
  i++; 
  pop2.display(); 
  popMatrix(); 
 
  pop3.display(); 
}
 

de class Pop

 

class Pop { 
  float x; 
  float y; 
  float n; 
 
  float snelh = 1; 
 
  Pop(float x_, float y_, float n_) { 
    x = x_; 
    y = y_; 
    n = n_; 
  } 
 
  void display()  
  {  
    fill(255, 255, 0);    
    rectMode(CENTER);    
    rect(x, y-n/4, n, n*1.5);            //lichaam    
    ellipse(x, y-1.5*n, n, n);           //hoofd    
    rectMode(CORNER);    
    rect(x-n, y-n, n/2, n*1.5);          //arm li    
    rect(x+n/2, y-n, n/2, n*1.5);        //arm re    
    quad(x-n, y+n*1.5, x-n/2, y+n/2, x+n/2, y+n/2, x+n, y+n*1.5); //jurk    
    rect(x-n/6*3, y+n*1.5, n/3, n);      //li been    
    rect(x+n/6, y+n*1.5, n/3, n);        //Re been 
  } 
 
  void bewegen() 
  { 
    x = x + snelh; 
    if (x > width || x < 0) snelh = snelh *-1; 
  } 
}
 

 

de class ¨Ruitjes¨ voor het ruitjespapier

 
 

class Ruitjes {  
 //class voor ruitjespapier in TV formaat  
 //voor n mag height/10, height/20, height/30, height/60 of height/120 zijn.  
 //Voor deze waarden is de correctiefactor j-width/160 in de verticale lijn nodig  
 //Bij andere waarden klopt het ruitjespapier niet meer  
 float x;  
 float y;  
 float n;  
  
 Ruitjes(float x_, float y_, float n_) {  
 x = x_;  
 y = y_;  
 n = n_;  
 }  
  
 void ruitjespapier() {  
 strokeWeight(1);  
 // horizontale lijntjes  
 for (float i = 0; i < height; i = i + n) {  
 line(0, i, width, i);  
 }  
 //verticale lijntjes  
 for (float j = 0; j < width; j = j + n) {  
 line(j-width/160, 0, j-width/160, height);  
 }  
 strokeWeight(2);  
 stroke(255, 0, 0);  
 //assenstelsel  
 line(0, height/2, width, height/2);  
 line(width/2, 0, width/2, height);  
 strokeWeight(8);  
 //om de 5 vakjes een controle puntje plaatsen  
 for (int k = 0; k < height; k = k+5) {  
 point(x-k*n, y);  
 point(x+k*n, y);  
 point(x, y-k*n);  
 point(x, y+k*n);  
 }  
 strokeWeight(1);  
 stroke(0);  
 }  
}