de straal van de draaiende kinderen is 0.5*n

de straal van de draaiende kinderen is 0.5*n

 

 

 

 

 

 

 

 

 

 

man.xReLi() en vrouw.xLiRe ingeschakeld  regel 40 en 42
 
man.xReLi() en vrouw.xLiRe ingeschakeld

regel 40 en 42

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

man, ieder vakje is 0.1*n

ieder vakje is 0.1*n

 

 

 

 

vrouw ieder vakje is 0.1*n

ieder vakje  is 0.1*n

 

 

 

                                            
 

Bovenstaande animatie is in p5.js de kinderen draaien in y richting, aan size moet daarom P3D worden toegevoegd (voor p5.js WEBGL)

OOP Familie met draaiende kinderen.                          terug naar de inleiding
 
Schets met de subclass "Mens" met de methodes man en vrouw en de superclass met rotatie methodes
De schets is uitgelijnd naar het computer scherm formaat.
De breedte en hoogte van de figuren is  nx en ny net als het huis in de class "Huis" van de schets huizenfabriek
 
 

 Mens vrouw;    
Mens vkindRondV;   
Mens vkindRondM;  
Mens man;   
Mens mkindRondM;   
Mens mkindRondV;  
Ruitjes ruitjespap;  
 
  float x; float y;  
  float nx; float ny;  
  float n;  
   
  void setup() {    
// fullScreen(P3D);   
  size(860,440,P3D);  
  x = width/2;     
  y = height/2;     
  nx = width/2.5;   
  ny = height/2.5;   
  n = height/2.5;  
  ruitjespap = new Ruitjes(n, x, y);  
 //constructor 1) = x,  2) = y, 3) = breedte, 4) = hoogte  
 //                      1     2       3   4 
  vrouw      = new Mens(x+n, y+n*0.5, nx, ny, color(106, 165, 45));    
  //n*0.5 is de staal van de draaicirkel  
  vkindRondV = new Mens(n*0.5, 0, nx*0.8, ny*0.5, color(106, 165, 255));    
  mkindRondV = new Mens(n*0.5, 0, nx*0.8, ny*0.5, color(200, 100, 100));   
    
  man        = new Mens(x-n, y+n*0.5, nx, ny, color(255, 165, 45));    
  mkindRondM = new Mens(n*0.5, 0, nx*0.8, ny*0.5, color(200, 100, 100));    
  vkindRondM = new Mens(n*0.5, 0, nx*0.8, ny*0.5, color(106, 165, 255));    
}  
  
void draw() {    
 background(#E6FBFF);  
  ruitjespap.display();  
//De niet bewegende figuren tekenen   
  man.display_man();   
// man.xReLi(); 
  vrouw.display_vrouw();  
// vrouw.xLiRe(); 
   
//man kinderen die rond de man draaien  
//in translate de positie van de man  
  pushMatrix();    
  translate(x-n, y+n*0.5);   
    mkindRondM.draaienYLi();    
    mkindRondM.display_man();    
  popMatrix();  
   
//vrouw kinderen die rond de man draaien  
//in translate de positie van de man    
  pushMatrix();   
  translate(x-n, y+n*0.5);   
    vkindRondM.draaienYRe();   
    vkindRondM.display_vrouw();   
  popMatrix();   
    
 //man kinderen die rond de vrouw draaien   
 //in translate de positite van de vrouw  
  pushMatrix();    
    translate(x+n, y+n*0.5);   
    mkindRondV.draaienYLi();    
    mkindRondV.display_man();    
  popMatrix();  
   
//vrouw kinderen die rond de vrouw draaien   
//in translate de positite van de vrouw    
  pushMatrix();   
    translate(x+n, y+n*0.5);   
    vkindRondV.draaienYRe();   
    vkindRondV.display_vrouw();   
  popMatrix();    
}
 
De subclass "Mens" met de methodes man en vrouw
 
 

class Mens extends Super {  
 // float x; //omdat in de superclass bewegingsfuncties in x richting zijn toegevoegd 
 // float x; verplaatsen naar de superclas 
  float y;   
  float nx;   
  float ny;   
  color c;    
  
Mens(float x_, float y_, float nx_, float ny_, color c_) {     
  x = x_;   
  y = y_;   
  ny = ny_;   
  nx = nx_;   
  c = c_;  
 }   
   
 void display_man() {    
 rectMode(CORNER);    
 fill(c);    
 rect(x-nx*0.1, y-ny*0.7, nx*0.2, ny*0.35);      // lijf   
 fill(255);    
 ellipse(x, y-ny*0.85, nx*0.2, ny*0.3);          // hoofd    
 fill(255, 0, 0);    
 ellipse(x-nx*0.05, y-ny*0.9, nx*0.04, nx*0.04); // oog re    
 ellipse(x+nx*0.05, y-ny*0.9, nx*0.04, nx*0.04); // oog re // oog li    
 ellipse(x, y-ny*0.85, nx*0.03, nx*0.04);        // neus    
 fill(255);   
 rectMode(CENTER);   
 rect(x, y-ny*0.75, nx*0.1, ny*0.02, 30);         // mond    
 ellipse(x+nx*0.1, y-ny*0.85, nx*0.03, ny*0.06);  // rechter oor    
 ellipse(x-nx*0.1, y-ny*0.85, nx*0.03, ny*0.06);  // linker oor    
 rectMode(CORNER);  
 rect(x-nx*0.2, y-ny*0.75, nx*0.1, ny*0.2);       // linkerarm    
 rect(x+nx*0.1, y-ny*0.75, nx*0.1, ny*0.2);       // rechterarm    
 rect(x-nx*0.08, y-ny*0.35, nx*0.06,ny*0.35);     // linkerbeen    
 rect(x+nx*0.02,y-ny*0.35, nx*0.06,ny*0.35);      // rechterbeen   
 }   
  
void display_vrouw() {    
 rectMode(CORNER);    
 fill(c);    
 rect(x-nx*0.1, y-ny*0.7, nx*0.2, ny*0.2);       // lijf   
 fill(255);    
 ellipse(x, y-ny*0.85, nx*0.2, ny*0.3);          // hoofd    
 fill(255, 0, 0);    
 ellipse(x-nx*0.05, y-ny*0.9, nx*0.04, nx*0.04); // oog re    
 ellipse(x+nx*0.05, y-ny*0.9, nx*0.04, nx*0.04); // oog re  // oog li    
 ellipse(x, y-ny*0.85, nx*0.03, nx*0.04);        // neus    
 fill(255);   
 rectMode(CENTER);   
 rect(x, y-ny*0.75, nx*0.1, ny*0.02, 30);         // mond    
 ellipse(x+nx*0.1, y-ny*0.85, nx*0.03, ny*0.06);  // rechter oor    
 ellipse(x-nx*0.1, y-ny*0.85, nx*0.03, ny*0.06);  // linker oor    
 rectMode(CORNER);  
 rect(x-nx*0.2, y-ny*0.75, nx*0.1, ny*0.2);   // linkerarm    
 rect(x+nx*0.1, y-ny*0.75, nx*0.1, ny*0.2);   // rechterarm    
 rect(x-nx*0.08, y-ny*0.2, nx*0.06,ny*0.2);   // linkerbeen    
 rect(x+nx*0.02,y-ny*0.2, nx*0.06,ny*0.2);    // rechterbeen   
 fill(c);    
 quad(x-nx*0.1, y-ny*0.5, x+nx*0.1, y-ny*0.5, x+nx*0.2, y-ny*0.2, x-nx*0.2, y-ny*0.2);   
 }   
}

 
 De superclass met de rotatie methodes en beweging in x richting
 
 

class Super {   
   
  float x; 
   
  int i;  
  float xsnelhRe = 1; 
  float xsnelhLi = 1; 
  
  Super() {   
   
  }   
    
  void display_man() {  
      
  }  
  
  void draaienYLi() {   
    i = i+1;   
    rotateY(radians(i));   
    if (i == 360) i = 0;  
  }   
  
  void draaienYRe() {   
    i = i+1;   
    rotateY(-radians(i));   
    if (i == 360) i = 0;  
  }   
   
   void xReLi() {      
    x = x - xsnelhRe;      
    if ((x > width) || (x < 0)) {      
      xsnelhRe = xsnelhRe * -1;    
    }  
  }    
   
   void xLiRe() {      
    x = x + xsnelhLi;      
    if ((x > width) || (x < 0)) {      
      xsnelhLi = xsnelhLi * -1;    
    }      
  }      
}