¡Esta es una revisión vieja del documento!
Podemos representar un objeto en una posición (punto x,y), con una velocidad (vector), una aceleración (vector) y una masa (número) desde Processing como…
class Objeto { PVector location; PVector velocity; PVector acceleration; float mass; float max_vel; Objeto(PVector loc, PVector vel, float mass) { acceleration = new PVector(0,0); velocity = vel.get(); location = loc.get(); this.mass = mass; } void update () { velocity.add(acceleration); location.add(velocity); acceleration.mult(0); } void applyForce (PVector force) { force.div(mass); acceleration.add(force); } void draw () { ellipse(location.x, location.y, 20, 20); } } Objeto obj; void setup() { size (500, 500); background(255); obj = new Objeto(new PVector(width / 2, height / 2), new PVector(0, 0), 5); strokeWeight(3); } void draw () { background(255); // applyForce obj.update(); obj.draw(); }
A partir de este podemos…
obj = new Objeto(new PVector(width / 2, height / 2), new PVector(-3, 2), 5);
PVector wind = new PVector(0.3,0); PVector gravity = new PVector(0,0.5); obj.applyForce(wind); obj.applyForce(gravity);
Con esto mostraríamos, para un objeto en una posición (10, 20) con masa 5 y una velocidad inicial de (-3, 2):
También podemos agregar resistencia con “viscosidad” al objeto:
float c = -0.5; PVector thingVel = obj.velocity; PVector force = PVector.mult(thingVel, c); obj.applyForce(force);