From 2c9742447a56c7ea53ce01461ea826078f9faeff Mon Sep 17 00:00:00 2001 From: TwolfSoul Date: Wed, 11 Nov 2015 13:50:53 -0500 Subject: [PATCH 1/7] Added "Gravity" Glitch to fix - Ball sinks below height boundary --- GravityBallCode/GravityBallCode.pde | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/GravityBallCode/GravityBallCode.pde b/GravityBallCode/GravityBallCode.pde index df2493b..03d8413 100644 --- a/GravityBallCode/GravityBallCode.pde +++ b/GravityBallCode/GravityBallCode.pde @@ -1,38 +1,40 @@ -//declare variables -float x, y, velX, velY, diam; +float x, y, velX, velY, diam,gravity; void setup() { - //set size of canvas size(800, 600); - //initialize variables x = width/2; y = height/2; diam = 80; velX = random(-5, 5); velY = random(-5, 5); + gravity = 0.3; } void draw() { - //draw background to cover previous frame background(0); - //draw ball ellipse(x, y, diam, diam); - //add velocity to position x += velX; y += velY; - //bounce ball if it hits walls if (x + diam/2 >= width) { - velX = -abs(velX); //if the ball hits the right wall, assign x velocity the negative version of itself + velX = -abs(velX); } else if (x - diam/2 <= 0) { - velX = abs(velX); //if the ball hits the left wall, assign x velocity the positive version of itself + velX = abs(velX); } if (y + diam/2 >= height) { velY = -abs(velY); } else if (y - diam/2 <= 0) { velY = abs(velY); } + if (y > 0) + { + velY = velY + gravity; + } + if (y+diam/2 == height) + { + velY = 0; + } } \ No newline at end of file From c4851918498e2b62d52d84f42555f276be578584 Mon Sep 17 00:00:00 2001 From: TwolfSoul Date: Wed, 11 Nov 2015 14:21:34 -0500 Subject: [PATCH 2/7] Added Friction Fixed Glitch - Ball does not sink past bottom Friction - Decreases x velocity every time it hits "ground" --- GravityBallCode/GravityBallCode.pde | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/GravityBallCode/GravityBallCode.pde b/GravityBallCode/GravityBallCode.pde index 03d8413..6fad225 100644 --- a/GravityBallCode/GravityBallCode.pde +++ b/GravityBallCode/GravityBallCode.pde @@ -1,6 +1,7 @@ -float x, y, velX, velY, diam,gravity; +float x, y, velX, velY, diam,gravity,y2,friction; -void setup() { +void setup() +{ size(800, 600); x = width/2; @@ -8,10 +9,13 @@ void setup() { diam = 80; velX = random(-5, 5); velY = random(-5, 5); - gravity = 0.3; + gravity = 0.4; + y2 = height - diam/2; + friction = 0.95; } -void draw() { +void draw() +{ background(0); ellipse(x, y, diam, diam); @@ -19,12 +23,14 @@ void draw() { x += velX; y += velY; - if (x + diam/2 >= width) { + if (x + diam/2 >= width) + { velX = -abs(velX); } else if (x - diam/2 <= 0) { velX = abs(velX); } - if (y + diam/2 >= height) { + if (y + diam/2 >= height) + { velY = -abs(velY); } else if (y - diam/2 <= 0) { velY = abs(velY); @@ -33,8 +39,12 @@ void draw() { { velY = velY + gravity; } - if (y+diam/2 == height) + if (y+diam/2 > height) { - velY = 0; + y = y2; } + if (y + diam/2 >= height) + { + velX = velX * friction; + } } \ No newline at end of file From 4d1f31616bdfe2d860a80b6f837f1cc17399ffd7 Mon Sep 17 00:00:00 2001 From: TwolfSoul Date: Wed, 11 Nov 2015 14:43:28 -0500 Subject: [PATCH 3/7] Made 30 Balls Glitch - Some balls do not follow code and continue bouncing...? --- GravityBallCode/GravityBallCode.pde | 68 +++++++++++++++++------------ 1 file changed, 40 insertions(+), 28 deletions(-) diff --git a/GravityBallCode/GravityBallCode.pde b/GravityBallCode/GravityBallCode.pde index 6fad225..ded567a 100644 --- a/GravityBallCode/GravityBallCode.pde +++ b/GravityBallCode/GravityBallCode.pde @@ -1,50 +1,62 @@ -float x, y, velX, velY, diam,gravity,y2,friction; +int woof = 30; +float[] x = new float[woof]; +float[] y = new float[woof]; +float[] velX = new float[woof]; +float[] velY = new float[woof]; +float[] diam = new float[woof]; +float[] gravity = new float[woof]; +float[] friction = new float[woof]; +float[] y2 = new float[woof]; void setup() { size(800, 600); - - x = width/2; - y = height/2; - diam = 80; - velX = random(-5, 5); - velY = random(-5, 5); - gravity = 0.4; - y2 = height - diam/2; - friction = 0.95; + for(int i = 0;i < woof; i++) + { + x[i] = random(width); + y[i]= random(height); + diam[i] = 50; + y2[i] = height - diam[i]/2; + velX[i] = random(-5, 5); + velY[i]= random(-5, 5); + gravity[i]= 0.4; + friction[i] = 0.95; + } } void draw() { background(0); +for(int i = 0;i < woof; i++) +{ + ellipse(x[i], y[i], diam[i], diam[i]); - ellipse(x, y, diam, diam); - - x += velX; - y += velY; + x[i] += velX[i]; + y[i] += velY[i]; - if (x + diam/2 >= width) + if (x[i] + diam[i]/2 >= width) { - velX = -abs(velX); - } else if (x - diam/2 <= 0) { - velX = abs(velX); + velX[i] = -abs(velX[i]); + } else if (x[i] - diam[i]/2 <= 0) { + velX[i] = abs(velX[i]); } - if (y + diam/2 >= height) + if (y[i] + diam[i]/2 >= height) { - velY = -abs(velY); - } else if (y - diam/2 <= 0) { - velY = abs(velY); + velY[i] = -abs(velY[i]); + } else if (y[i] - diam[i]/2 <= 0) { + velY[i] = abs(velY[i]); } - if (y > 0) + if (y[i] >= 0) { - velY = velY + gravity; + velY[i] = velY[i] + gravity[i]; } - if (y+diam/2 > height) + if (y[i]+diam[i]/2 > height) { - y = y2; + y[i] = y2[i]; } - if (y + diam/2 >= height) + if (y[i] + diam[i]/2 >= height) { - velX = velX * friction; + velX[i] = velX[i] * friction[i]; } +} } \ No newline at end of file From 70cd32a3031ca1bb9f0f7e4c0b42048fca5385d3 Mon Sep 17 00:00:00 2001 From: TwolfSoul Date: Wed, 11 Nov 2015 14:46:36 -0500 Subject: [PATCH 4/7] Nothing Serious Removed an equal sign. --- GravityBallCode/GravityBallCode.pde | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GravityBallCode/GravityBallCode.pde b/GravityBallCode/GravityBallCode.pde index ded567a..6b9313f 100644 --- a/GravityBallCode/GravityBallCode.pde +++ b/GravityBallCode/GravityBallCode.pde @@ -46,7 +46,7 @@ for(int i = 0;i < woof; i++) } else if (y[i] - diam[i]/2 <= 0) { velY[i] = abs(velY[i]); } - if (y[i] >= 0) + if (y[i] > 0) { velY[i] = velY[i] + gravity[i]; } From 5e846ae7851795098615071f71f78e759f765a22 Mon Sep 17 00:00:00 2001 From: TwolfSoul Date: Wed, 11 Nov 2015 14:50:38 -0500 Subject: [PATCH 5/7] IDK Changes, where? --- GravityBallCode/GravityBallCode.pde | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GravityBallCode/GravityBallCode.pde b/GravityBallCode/GravityBallCode.pde index 6b9313f..55cd4a4 100644 --- a/GravityBallCode/GravityBallCode.pde +++ b/GravityBallCode/GravityBallCode.pde @@ -17,8 +17,8 @@ void setup() y[i]= random(height); diam[i] = 50; y2[i] = height - diam[i]/2; - velX[i] = random(-5, 5); - velY[i]= random(-5, 5); + velX[i] = random(-4.9, 5); + velY[i]= random(-4.9, 5); gravity[i]= 0.4; friction[i] = 0.95; } From 3924c3bda65bf0482aacaaf82b6f3239c1c588d7 Mon Sep 17 00:00:00 2001 From: TwolfSoul Date: Thu, 12 Nov 2015 13:39:15 -0500 Subject: [PATCH 6/7] Finalized Added color, took out stroke, made sure gravity worked on balls that hit top of screen... --- GravityBallCode/GravityBallCode.pde | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/GravityBallCode/GravityBallCode.pde b/GravityBallCode/GravityBallCode.pde index 55cd4a4..27f19a0 100644 --- a/GravityBallCode/GravityBallCode.pde +++ b/GravityBallCode/GravityBallCode.pde @@ -29,6 +29,8 @@ void draw() background(0); for(int i = 0;i < woof; i++) { + noStroke(); + fill(random(255),random(255),random(255)); ellipse(x[i], y[i], diam[i], diam[i]); x[i] += velX[i]; @@ -46,7 +48,7 @@ for(int i = 0;i < woof; i++) } else if (y[i] - diam[i]/2 <= 0) { velY[i] = abs(velY[i]); } - if (y[i] > 0) + if (y[i] > -1) { velY[i] = velY[i] + gravity[i]; } From 500b2c43d17d4bcc0a29fc4d139ec3251e1882bf Mon Sep 17 00:00:00 2001 From: TwolfSoul Date: Thu, 12 Nov 2015 13:45:48 -0500 Subject: [PATCH 7/7] Actually Finalized Fixed glitch where balls that touched ceiling weren't slowed by gravity. --- GravityBallCode/GravityBallCode.pde | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GravityBallCode/GravityBallCode.pde b/GravityBallCode/GravityBallCode.pde index 27f19a0..009fdbb 100644 --- a/GravityBallCode/GravityBallCode.pde +++ b/GravityBallCode/GravityBallCode.pde @@ -48,7 +48,7 @@ for(int i = 0;i < woof; i++) } else if (y[i] - diam[i]/2 <= 0) { velY[i] = abs(velY[i]); } - if (y[i] > -1) + if (y[i]-diam[i]/2 > 0) { velY[i] = velY[i] + gravity[i]; }