Tabla de Contenidos

Ejemplos de física

Leyes de Newton

Movimiento de un objeto

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):

  1. Aceleración causada por viento desde la derecha (5, 0): Aceleración por viento = viento / masa = (5,0) / 5 = (1,0)
  2. Aceleración causada por la gravedad (0, 10): Aceleración por gravedad = gravedad / masa = (0,10) / 5 = (0,2)
  3. Aceleración total = (1,0) + (0,2) = (1,2)
  4. Velocidad = velocidad + aceleración = (-3,2) + (1,2) = (-2,4)
  5. Posición = posición + velocidad = (10,20) + (-2,4) = (8,24)

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);