Herramientas de usuario

Herramientas del sitio


numbers:physics:examples

¡Esta es una revisión vieja del documento!


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…

  • Cambiar la velocidad inicial cambiando la creación del objeto:
obj = new Objeto(new PVector(width / 2, height / 2), new PVector(-3, 2), 5);
  • Aplicarle una o varias fuerzas
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);
numbers/physics/examples.1270397517.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)