====== 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 [[highlevel:processing|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):
- Aceleración causada por viento desde la derecha (5, 0): Aceleración por viento = viento / masa = (5,0) / 5 = (1,0)
- Aceleración causada por la gravedad (0, 10): Aceleración por gravedad = gravedad / masa = (0,10) / 5 = (0,2)
- Aceleración total = (1,0) + (0,2) = (1,2)
- Velocidad = velocidad + aceleración = (-3,2) + (1,2) = (-2,4)
- 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);