float X1, X2, Y;
float Sp1, Sp2;
int r;
void setup(){
size(400, 400);
colorMode(HSB, 100);
X1 = width/2 + 30;
X2 = width/2 - 30;
Y = height/2;
Sp1 = 5;
Sp2 = -Sp1;
r = 20;
frameRate(30);
smooth();
}
void draw(){
fadeToWhite(99, 100);
bounce();
collide();
X1 += Sp1;
X2 += Sp2;
fill(90, 60, 60, 90);
ellipse(X1, Y, r*2, r*2);
fill(40, 60, 60, 90);
ellipse(X2, Y, r*2, r*2);
}
void bounce() {
if (X1 <= r || X1 >= width-r){
Sp1 = -Sp1;
if (X1 <= r) { X1 = 2*r - X1; }
if (X1 >= width-r) { X1 = 2*(width-r) - X1; }
}
if (X2 <= r || X2 >= width-r){
Sp2 = -Sp2;
if (X2 <= r){ X2 = 2*r - X2; }
if (X2 >= width-r) { X2 = 2*(width-r) - X2; }
}
}
void collide() {
float dd = dist(X1, Y, X2, Y);
float min = r * 2;
if (dd <= min){
Sp1 = -Sp1;
Sp2 = -Sp2;
X1 = X1 - (min - dd);
X2 = X2 - (min - dd);
}
}
void fadeToWhite(int max_color, float fade_speed) {
noStroke();
fill(max_color, fade_speed);
rectMode(CORNER);
rect(0, 0, width, height);
}
Tuesday, September 14, 2010
Processing: collition
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment