header

 

 

 

 

 

 

vormen overlap

 

 

 

 

 

 

vormen overlappen

 

 

 

 

 

vormen overlappen

 

 

 

9) vormen overlappen en diameters varieren .            terug naar de inleiding

Door het overlappen verandert de kleur van de rode cirkel

 

DiamVar rood;  
DiamVar groen; 
DiamVar blauw; 
DiamVar groenLinks; 
DiamVar groenRechts;
void setup() {  
 //size(960,540);  
 fullScreen(); 
 //argumenten van de constructor: x positie, y positie, kleinste diameter 
 //grootste diameter, snelheid en r,g,b kleur 
 rood = new DiamVar(width/4*2, height/2, height/27, height/1.08, 0.5, color(255, 20, 20,100));  
 groen = new DiamVar(width/4*2, height/2, width/5, width/1.7, 3, color(0, 255, 50, 100));  
 blauw = new DiamVar(width/4*2, height/2, width/5, width/2.5, 0.5, color(50, 0, 255, 100)); 
 groenLinks = new DiamVar(width/4*1, height/2, width/17, width/2.5, 1, color(0, 200, 20, 100));  
 groenRechts = new DiamVar(width/4*3, height/2, width/17, width/2.5, 0.3, color(25, 255, 20, 100)); 
}
void draw() {  
 background(100, 100, 200); 
 rood.cirkel();  
 rood.kleinGroot();
 
 groen.cirkel();  
 groen.kleinGroot();
 
 
 blauw.vierkant(); 
 blauw.kleinGroot(); 

 groenLinks.cirkel();  
 groenLinks.kleinGroot();
 
 groenRechts.cirkel();  
 groenRechts.kleinGroot();
 
if (groenRechts.overlappen(rood)) { 
 rood.c = color(125, 200, 0, 100); 
 }
 
 if (groenLinks.overlappen(rood)) { 
 rood.c = color(255, 20, 20, 100); 
 } 
}

void keyPressed() {  
 if (key == 's') {  
 noLoop(); 
 }  
 if (key == 'r') {  
 loop(); 
 } 
}
 
De class met de overlappen boolean methode
 
 

class DiamVar {  
 float x;  
 float y;  
 float b;  
 float beginvar; 
 float groot; 
 color c;  
 float snelh;
float begin;
DiamVar(float x_, float y_, float beginvar_, float groot_, float snelh_, color c_) {  
 x = x_;  
 y = y_;  
 beginvar = beginvar_;  
 groot = groot_; 
 snelh = snelh_; 
 c = c_;
begin = beginvar; 
 }
boolean overlappen(DiamVar met) {  
 float d = dist (x, y, met.x, met.y) ;  
 //d  is de afstand tussen de middelpunten van de cirkels 
 if (d < beginvar/2 + met.beginvar/2) {  
 // beginvar en met.beginvar zijn de diameters van de cirkels 
 return true; 
 } else { 
 return false; 
 } 
 }
void cirkel() { 
 fill(c);  
 ellipse(x, y, beginvar, beginvar); 
 }
void vierkant() {  
 rectMode(CENTER);  
 fill(c);  
 rect(x, y, beginvar, beginvar); 
 }
void kleinGroot() { 
 beginvar = beginvar + snelh; 
 if ((beginvar > groot) || (beginvar < begin)) 
 { 
 snelh = snelh * -1; 
 } 
 } 
}