sidebar 1

9 vliegers h1 = n/2 h2 =n

 

9 vliegers met h1 = -n/2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

header vlieger
 draaipunten 0 t/m 8 met h1 = n/2 en h2 = n
 

Vlieger            terug naar de inleiding           onder de class staan de 2 voorbeelden       zie ook het voorbeeld  acht pijlen rond achthoek

bekijk de draaien vormen  van de schets in voorbeeld 1
met toetsen 2 t/m 5 verander je de draaipunten van de vierkanten
met toets 6 t/m 9 verander je de draaipunten van de vliegers
toets 1 reset de oorspronkelijke toestand
 
argumenten van de constructor
Met de eerste drie argumenten van de constructor bepaal je de grootte en vorm van de vlieger.
1) "n" is de lengte van de korte diagonaal
2) "h1" is de lengte van de top naar de korte diagonaal
3) "h2" is de lengte van de kort diagonaal naar de punt van de vlieger. Dus de lange diagonaal is h1+h2.
4) draaipunt d,   5) x positie,  6) y positie,  7) hoek,  8) kleur
 
met h1 =  h2 = n/2 is de vlieger een vierkant
met h1 = negatief ontstaat een naar beneden gerichte pijl
met h2 = negatief ontstaat een naar boven gerichte pijl
met h1 = h2 = n ontstaat een ruit
met h1 = h2 = sqrt(3*n*n/4); ontstaat een ruit met zijden en korte diagonaal = n
 
Dus je kan met de "Vlieger" class vliegers, vierkanten, ruiten en pijlen maken.
 

class Vlieger extends Vormen { 
 
  Vlieger(float n_, float h1_, float h2_, int d_, float x_, float y_, float hoek_, color c1_) { 
    super(); 
    n = n_;  
    h1 = h1_; 
    h2 = h2_; 
    x = x_;  
    y = y_;  
    hoek = hoek_;  
    c1 = c1_; 
    d = d_; 
  } 
 
  void display() { 
    fill(c1); 
    // noStroke(); 
    pushMatrix(); 
    translate(x, y); 
    rotate(radians(hoek));   
    beginShape();  
    if (d == 0) {vertex(0, h2);vertex(-n/2, 0);vertex(0, -h1);vertex(n/2, 0);}      
    if (d == 1) {vertex(0, 0);vertex(-n/2, -h2);vertex(0, -(h1+h2));vertex(n/2, -h2); } 
    if (d == 2) {vertex(n/4, h2/2); vertex(-n/4, -h2/2);vertex(n/4, -(h2/2+h1));vertex(3*n/4, -h2/2);} 
    if (d == 3) {vertex(n/2, h2);vertex(0, 0);vertex(n/2, -h1); vertex(n, 0);}        
    if (d == 4) {vertex(n/4, h2+h1/2);vertex(-n/4, h1/2);vertex(n/4, -h1/2);vertex(3*n/4, h1/2);}     
    if (d == 5) {vertex(0, h1+h2);vertex(-n/2, h1);vertex(0, 0);vertex(n/2, h1);}       
    if (d == 6) {vertex(-n/4, h1/2+h2);vertex(-3*n/4, h1/2);vertex(-n/4, -h1/2);vertex(n/4, h1/2);}      
    if (d == 7) {vertex(-n/2, h2);vertex(-n, 0);vertex(-n/2, -h1);vertex(0, 0);}     
    if (d == 8) {vertex(-n/4, h2/2);vertex(-3*n/4, -h2/2);vertex(-n/4, -(h2/2+h1));vertex(n/4, -h2/2);}          
    endShape(CLOSE); 
    popMatrix(); 
  } 
}

 
voorbeeld 1
In deze schets worden, mbv de class "Vlieger" ,een pijl, (vorm 0) twee vierkanten met zijden 2*a (vormen 1 en 2) en vier vliegers (vormen 3 t/m 6) geconstrueerd.
In de class "Vlieger" is de coderegel "strokeWeight(2);" toegevoegd zodat de lijnen dikker zijn

De schets maakt ook gebruik van de superclass ¨Vormen¨

bekijk de draaien vormen
met toetsen 2 t/m 5 verander je de draaipunten van de vierkanten
met toets 6 t/m 9 verander je de draaipunten van de vliegers
toets 1 reset de oorspronkelijke toestand
 
 
 Vormen [] vorm;
int dp1 = 0;
int dp2 = 0;
void setup() {
  size(980, 760);
  float x = width/2;
  float y = height/2;
  float n = height/11;
  vorm    = new Vormen[7];
  vorm[0] = new Vlieger(4*n,-2*n, 6*n, 1, x,   y+3*n, 0, color(242,105,117,100));
  vorm[1] = new Vlieger(4*n, 2*n, 2*n, 1+dp1, x,   y-n,   0, color(37,229,224,100));
  vorm[2] = new Vlieger(4*n, 2*n, 2*n, 1+dp1, x,   y-n,   0, color(94,189,154,100));
  vorm[3] = new Vlieger(2*n, 3*n, 2*n, 7-dp2, x-n, y,     0, color(90,150,100,100));
  vorm[4] = new Vlieger(2*n, 3*n, 2*n, 3+dp2, x+n, y,     0, color(105,242,216,100));
  vorm[5] = new Vlieger(2*n, 2*n, 3*n, 5-dp2, x,   y,    90, color(203,242,105,100));
  vorm[6] = new Vlieger(2*n, 2*n, 3*n, 5-dp2, x,   y,   -90, color(203,230,100,100));
}
 
void draw() {
  background(#E6FBFF);
  
  for (int i = 0; i < 7; i++)
  {
    vorm[i].display();
  }  
  
   if (key == 's') {     
      
  }       
   else  
 {  
  vorm[1].dpRotRe(vorm[1]);
  vorm[2].dpRotLi(vorm[2]);  
  vorm[3].dpRotRe(vorm[3]);
  vorm[4].dpRotLi(vorm[4]);  
  vorm[5].dpRotLi(vorm[5]);
  vorm[6].dpRotRe(vorm[6]);
 }
}
 
void keyPressed() {     
 if (key == '1') {          
     dp1 = 0; dp2 = 0; 
     setup();      
  }        
  if (key == '2') {   
    dp1 = 1; 
    setup();       
}  
  if (key == '3') {          
     dp1 = 2;  
    setup();       
}  
  if (key == '4') {          
     dp1 = 3;      
    setup();  
} 
  if (key == '5') {          
     dp1 = 4;    
     setup();  
}      
  if (key == '6') {          
      dp2 = 1; 
     setup();  
}      
  if (key == '7') {          
      dp2 = 2;  
     setup();  
}  
 if (key == '8') {          
      dp2 = 3; 
     setup();  
  }
  if (key == '9') {          
      dp2 = 4; 
     setup();  
  }
}

 
 
 voorbeeld 2
mbv de class "Vlieger"  worden vier pijlen geconstrueerd.
De pijlen draaien er vrolijk op los  De schets maakt ook gebruik van de superclass ¨Vormen¨
 

enkele toetsfuncties

Met toetsen 1 t/m 3 verander je de draaipunten.
Met toets "s" stopt, en met toets "r" start de animatie.
 
 Vormen [] vorm; 
int dp = 1; 
void setup() { 
  size(780, 560); 
  float x = width/2; 
  float y = height/2; 
  float n = height/4; 
  float a = sqrt(2*n*n); 
  vorm    = new Vormen[7]; 
  vorm[0] = new Vlieger(a, -a/2, 1.5*a, dp, x, y-n/2, 135, color(255,255,0,100)); 
  vorm[1] = new Vlieger(a, -a/2, 1.5*a, dp, x, y-n/2,-135, color(255,0,0,100)); 
  vorm[2] = new Vlieger(a, -a/2, 1.5*a, dp, x, y+n/2,  45, color(0,0,255,100)); 
  vorm[3] = new Vlieger(a, -a/2, 1.5*a, dp, x, y+n/2, -45, color(0,255,0,100)); 
} 
 
void draw() { 
  background(#E6FBFF); 
 
  for (int i = 0; i < 4; i++) 
  { 
    vorm[i].display(); 
  }  
  vorm[0].dpRotRe(vorm[0]); 
  vorm[1].dpRotLi(vorm[1]); 
  vorm[2].dpRotLi(vorm[2]);   
  vorm[3].dpRotRe(vorm[3]); 
} 
 
void keyPressed() {      
  if (key == 's') {     
    noLoop(); 
  }    
 
  if (key == 'r') {        
    loop(); 
  } 
   
   if (key == '1') {           
     dp = 1;  
     setup();       
  }         
  if (key == '2') {    
     dp = 3;   
    setup();        
}   
  if (key == '3') {           
     dp = 5;   
    setup();
  }
}