...
Code Block |
---|
PVector pos = new PVector(200,200); PVector velocity = new PVector(1,0); float damper = 0.99; void setup() { size(600,600); fill(255); } void draw() { background(0); velocity.mult(damper); // always slow the ball down to simulate resistance pos.add(velocity); // pos + velocity give us our new position! // if the ball is above or below the screen, invert the y value of the velocity to send it back where it came from if (pos.y<0 || pos.y>height) { velocity.y = -velocity.y; pos.add(velocity); } // if the ball is left or right of the screen, invert the x value if (pos.x<0 || pos.x>width) { velocity.x = -velocity.x; pos.add(velocity); } ellipse(pos.x, pos.y,30,30); if(mousePressed) { // show us our "line of power" stroke(255,0,0); line(pos.x,pos.y, mouseX,mouseY); noStroke(); } }; void mouseReleased() { // when the mouse is released we give a ball a big push PVector direction = new PVector(mouseX, mouseY); direction.sub(pos); // by subtracting the pos from mouse coordinates, we end up with a vectore between the two points direction.mult(.2); // we shorten the magnitude to reduce the power of the push velocity.set(direction); //now we have our new velocity }; |
...
Exercise:
...
The physics of a car a very different to a planet or a bouncy ball, yet most of the parameters are the same.
...
Modify example 2 to include a gravity force. The ball should fall towards the bottom of the screen, where it will bounce up again.