diameter van vormen varieren.          terug naar de inleiding

Schets met objecten van de class DiamVar, met een cirkel in eerste, tweede en derde kwadrant.
In het (x,y) punt staat een rechthoek en een cirkel die gelijk groter en kleiner worden, de object methode variatieKG zorgt dat de vormen van klein naar groot bewegen.
Tip: Aan de class de methode variatieGK toevoegen zodat de objecten van groot naar klein bewegen

Met argumenten 3 en 4 stel je de grenzen in waarbinnen de vormen in grootte varrieeren.

Ga naar de animatie, met de "s" toets stoppen- en met de "r" toets starten de bewegingen weer.

Onder de schets staat de class "DiamVar".   In de schets is ook de class "Ruitjes" gedeclareerd.

 

DiamVar cirkel1;
DiamVar cirkel2;   
DiamVar cirkel3;  
DiamVar rechthM;  
DiamVar cirkelM; 
Ruitjes ruitjespap;
 
void setup() {   
 
 //fullScreen();  
  size(960, 540); 
  float x = width/2; 
  float y =height/2; 
  float n = height/20; 
 
   //argumenten van de constructor:1) x positie, 2) y positie, 3) begin diameter 4) eind diameter, 5) snelheid 6) color 
  //                       1      2      3    4    5               6
  cirkel1  = new DiamVar(x+5*n, y-5*n, 5*n,  10*n, 0.4, color(255, 255, 0, 100));
  cirkel2  = new DiamVar(x-5*n, y-5*n,   n,  10*n, 0.5, color(255, 0, 20, 100)); 
  cirkel3  = new DiamVar(x-5*n, y+5*n, 5*n,  10*n, 0.4, color(0, 255, 20, 100)); 
 
  rechthM  = new DiamVar(x,     y,     5*n,  10*n,  1,  color(0, 255, 0, 100));   
  cirkelM  = new DiamVar(x,     y,     5*n,  10*n,  1,  color(0, 0, 255, 100));  
 
  ruitjespap = new Ruitjes(n,x,y);
} 
void draw() {   
  background(#E6FBFF); 
  cirkel1.displayE();   
  cirkel1.variatieKG(); 
  
  cirkel2.displayE();   
  cirkel2.variatieKG(); 
  
  cirkel3.displayE(); 
  cirkel3.variatieKG(); 
  
  rechthM.displayR();   
  rechthM.variatieKG();
  
  cirkelM.displayE();  
  cirkelM.variatieKG(); 
  
 // ruitjespap.display();
  
} 
void keyPressed() {   
  if (key == 's') {   
    noLoop(); 
  }   
  if (key == 'r') {   
    loop(); 
  } 
}
 

De class DIamVar 

"begin" komt in "beginConst" want de waarde van begin varrieert 

"beginConst" (regel 8 en 17) is een constante (de begin grootte van de vorm) die in de for lus wordt gebruikt
Zie regel 32 "BeginCons" is de kleinste diameter van de vorm en "eind" is de grootste diameter van de vorm
Als een van deze condities is bereikt moet de snelheid omdraaien.  (vandaar een || = logische OR) 
eind varrieert dus niet 
Wat gebeurt er als in displayE en displayR  begin wordt vervangen door eind ?
 

class DiamVar {   
  float x;  float y;  float b;   
  float begin;  
  float eind;  
  color c;   
  float snelh; 
  float beginConst; 
  DiamVar(float x_, float y_, float begin_, float eind_, float snelh_, color c_) {   
    x = x_;   
    y = y_;   
    begin = begin_;   
    eind = eind_;  
    snelh = snelh_;  
    c = c_; 
   
    beginConst = begin; 
  } 
  void displayE() {  
    fill(c);   
    ellipse(x, y, begin, begin); 
  } 
  void displayR() {   
    rectMode(CENTER);   
    fill(c);   
    rect(x, y, begin, begin); 
  } 
  
  void variatieKG() {  
    begin = begin + snelh; 
    //  || is een logische OR. De snelheid moet in twee situaties omdraaien
    if ((begin > eind) || (begin < beginConst)) 
    {  
      snelh = snelh * -1; 
    } 
  } 
}