vormen overlappen en diameters varieren .            terug naar de inleiding

bekijk de cirkels en vierkant

Door het overlappen verandert de kleur van de rode cirkel

 

DiamVar rood;   
DiamVar groen;  
DiamVar blauw;  
DiamVar groen2;  
DiamVar groen3; 
void setup() {   
size(960,540);  
 //argumenten van de constructor: x positie, y positie, kleinste diameter  
 //grootste diameter, snelheid en r,g,b kleur  
 float x = width/2; 
 float y = height/2; 
 float n = height/30; 
 ruit = new Ruitjes(x,y,n); 
 rood =   new DiamVar(x-10*n, y,     10*n, 15*n, 0.5, color(255, 20, 20,100));   
 groen =  new DiamVar(x+15*n, y,     5*n,  20*n,   2, color(0, 255, 50, 100));   
 blauw =  new DiamVar(x,      y,     10*n, 20*n, 0.5, color(50, 0, 255, 100));  
 groen2 = new DiamVar(x,      y-4*n, 5*n,  10*n,   1, color(0, 200, 20, 100));   
 groen3 = new DiamVar(x,      y,     5*n,  15*n, 0.3, color(25, 255, 20, 100));  
} 
void draw() {   
 background(#E6FBFF); 
 rood.cirkel();   
 rood.kleinGroot(); 
  
 groen.cirkel();   
 groen.kleinGroot(); 
  
 blauw.vierkant();  
 blauw.kleinGroot();  
 
 groen2.cirkel();   
 groen2.kleinGroot(); 
  
 groen3.cirkel();   
 groen3.kleinGroot(); 
  
if (groen3.overlappen(rood)) {  
 rood.c = color(125, 200, 0, 100);  
 } 
  
 if (groen2.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; 
 } 
 } 
}