• fullscreen
• bouncingballA25Sept08.pde
• thing_class.pde
• ```import noc.*;

boolean showVectors = true;
boolean check = false;

Thing T;

void setup()
{
size(640,480);
T = new Thing(new Vector3D(1,1),new Vector3D(0,0),new Vector3D(420,100));
translate(320,0);
smooth();
ellipseMode(CENTER);
noStroke();
fill(200);
}

void draw()
{
background(0);
T.go();
}

void drawVector(Vector3D v, Vector3D l, float scayl)
{
pushMatrix();
translate(l.x,l.y);
popMatrix();
}

void mousePressed()
{
T = new Thing(new Vector3D(1,1),new Vector3D(0,0),new Vector3D(mouseX,mouseY));
}

```
```// Simple Vector3D
// Daniel Shiffman <http://www.shiffman.net>
// The Nature of Code, Spring 2006

// Demonstrates simple motion with a Thing class

// Created 2 May 2005

// A class to describe a thing in our world
// Has variables for location, velocity, and acceleration

class Thing {
Vector3D loc;
Vector3D vel;
Vector3D acc;

int change = 1;
//The Constructor (called when the object is first created)
Thing(Vector3D a, Vector3D v, Vector3D l) {
acc = a.copy();
vel = v.copy();
loc = l.copy();
}

//main function to operate object)
void go() {
update();
borders();
render();
}

//function to update location
void update() {
}

void borders() {
if (loc.y >= height-8)
{
vel.y*=-1;
loc.y = height-8;
}
if (loc.x >= width-8)
{
change=-1;
}
if (loc.x <= 0)
{
change=1;
}
acc.x-=0.02;
if(acc.x<=0) acc.x=0;
vel.x = abs(vel.x)-0.007;
if(abs(vel.x)<=0) vel.x = 0;
vel.x*=change;

}

//function to display
void render() {
ellipse(loc.x,loc.y,16,16);
//drawVector(vel,loc,10);
}

}

```