fam animatie

de straal van de draaiende kinderen is 0.5*n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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(960,540,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 
  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); 
//De niet bewegende figuren tekenen  
  man.display_man();  
  vrouw.display_vrouw();  
  ruitjespap.display(); 
   
//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(); 
  
  pushMatrix();  
  translate(x-n, y+n*0.5);  
    vkindRondM.draaienYRe();  
    vkindRondM.display_vrouw();  
  popMatrix();  
   
 //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(); 
  
  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 { 
   
Mens(float x_, float y_, float nx_, float ny_, color c_) {   
 super(x_, y_, nx_, ny_, 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
 
 

class Super {  
  float x;  
  float y;  
  float nx;  
  float ny;  
  color c;  
  int i;  
 
  Super(float x_, float y_, float nx_, float ny_, color c_) {  
    x = x_;  
    y = y_;  
    ny = ny_;  
    nx = nx_;  
    c = c_; 
  }  
   
  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; 
  }  
}