vrouw1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

vrouw2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

vrouw3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

vrouw4

 

 

 

vrouw5

 

 

poppetje in een functie met argumenten: x, y positie en grootte n als functie van height         terug naar de inleiding
 
De functie vrouw wordt in draw() drie keer, in verschillende posities en grootte, aangeroepen.
 
 

 void setup() { 
  size(960, 540); 
} 
 
void draw() { 
  background(#E6FBFF);  
  vrouw(width/4*1, height/2, height/10);  
  vrouw(width/4*2, height/2, height/8);    
  vrouw(width/4*3, height/2, height/6); 
} 
 
void vrouw(float x, float y, float n) 
{ 
  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 
}
 

 

poppetje in een functie met color als toegevoegd argument

 

void setup() {  
  size(960, 540);  
}  
  
void draw() {  
  background(#E6FBFF);   
  vrouw(width/4*1, height/2, height/10, color(255,0,0));   
  vrouw(width/4*2, height/2, height/8, color(0,255,0));    
  vrouw(width/4*3, height/2, height/6, color(0,0,255)); 
}  
  
void vrouw(float x, float y, float n, color c)  
{  
  fill(255);   
  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  
  fill(c); 
  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   
  fill(255); 
  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  
}
 

 

poppetje in een functie met de argumenten: x, y positie, breedte nx, de hoogte ny, en de kleur van de jurk

Omdat de functie vrouw argumenten heeft die telkens in de draw functie worden vastgelegd kan je geen bewegingsfuncties toevoegen!!
Dit kan wel bij functies zonder argumenten, zie de dansende bal schets
Dit probleem los je het beste op met OOP (Object-Oriented Programming)
 
 

void setup() {   
  size(960, 540);   
}   
   
void draw() {   
  background(#E6FBFF);    
  vrouw(width/4*1, height/2, width/20,  height/10, color(255,0,0));    
  vrouw(width/4*2, height/2, width/10,  height/8,  color(0,255,0));     
  vrouw(width/4*3, height/2, width/15,  height/6,  color(0,0,255));  
}   
   
void vrouw(float x, float y, float nx, float ny, color c)   
{   
  fill(255);    
  rectMode(CENTER);    
  rect(x, y-ny/4, nx, ny*1.5);         //lichaam     
  ellipse(x, y-1.5*ny, nx, ny);        //hoofd     
  rectMode(CORNER);    
  rect(x-nx, y-ny, nx/2, ny*1.5);       //arm li     
  rect(x+nx/2, y-ny, nx/2, ny*1.5);     //arm re   
  fill(c);  
  quad(x-nx, y+ny*1.5, x-nx/2, y+ny/2, x+nx/2, y+ny/2, x+nx, y+ny*1.5); //jurk    
  fill(255);  
  rect(x-nx/6*3, y+ny*1.5, nx/3, ny);   //li been     
  rect(x+nx/6, y+ny*1.5, nx/3, ny);     //Re been   
}
 

 

Schets waarin het middelste poppetje roteert
 
Binnen push en popMatrix() moet je na translate altijd eerst de rotate functie aanroepen
en daarna de functie met de te roterende vorm!!

 

 

float i; 
 
void setup() {    
  size(960, 540);    
}    
    
void draw() {    
  background(#E6FBFF);     
  vrouw(width/4*1, height/2, width/20,  height/10, color(255,0,0));  
   
  pushMatrix(); 
  translate(width/4*2, height/2);   
  rotate(radians(i));  
  i = i + 1; 
  vrouw(0, 0, width/10, height/8,  color(0,255,0));    
  popMatrix(); 
    
  vrouw(width/4*3, height/2, width/15,  height/6,  color(0,0,255)); 
}    
    
void vrouw(float x, float y, float nx, float ny, color c)    
{    
  fill(255);     
  rectMode(CENTER);     
  rect(x, y-ny/4, nx, ny*1.5);         //lichaam      
  ellipse(x, y-1.5*ny, nx, ny);        //hoofd      
  rectMode(CORNER);     
  rect(x-nx, y-ny, nx/2, ny*1.5);       //arm li      
  rect(x+nx/2, y-ny, nx/2, ny*1.5);     //arm re    
  fill(c);   
  quad(x-nx, y+ny*1.5, x-nx/2, y+ny/2, x+nx/2, y+ny/2, x+nx, y+ny*1.5); //jurk     
  fill(255);   
  rect(x-nx/6*3, y+ny*1.5, nx/3, ny);   //li been      
  rect(x+nx/6, y+ny*1.5, nx/3, ny);     //Re been    
}