package mecanica.movimiento; public class Particula { ////////////////// // atributos /** Coordenada x de la partícula*/ private double x; /** Coordenada y de la partícula */ private double y; /** Velocidad en x de la partícula */ private double vx; /** Velocidad en y de la partícula */ private double vy; //////////////// // constructoras /** construye una nueva partícula en la pos. (0,0) y con velocidad (0,0) */ public Particula() {x=y=vx=vy=0.0;} /** construye una nueva partícula en la posición (xIni,yIni) con velocidad (vxIni,vyIni) */ public Particula(double xIni,double yIni,double vxIni,double vyIni){ x = xIni; y=yIni; vx = vxIni; vy = vyIni; } ////////////////// // métodos /** coordenada x de la partícula */ public double getX() { return x;} /** coordenada y de la partícula */ public double getY() { return y;} /** velocidad en x de la partícula */ public double getVx() { return vx;} /** velocidad en y de la partícula */ public double getVy() { return vy;} /** * Módulo del vector velocidad de la párticula. * @return Velocidad de la particula */ public double móduloVelocidad() { return Math.sqrt(vx*vx+vy*vy); } /** * Indica si ésta partícula puede chocar con la partícula p para algún tiempo * t para algún t puede ser positivo, negativo o 0, es decir si las dos trayectorias se cruzan * o si por el contrario son paralelas * @return true si esta partícula puede chocar con la partícula 'p'. false e.o.c. * @param p Partícula con la que se quiere comprobar si hay posible choque */ public boolean puedenChocar(Particula p) { boolean resultado=false; if (vx == p.getVx()) { if (x==p.getX()) if (vy == p.getVy()) resultado = y==p.getY(); else resultado=true; } else { double t = (x - p.getX()) / (p.getVx()-vx); if (vy == p.getVy()) resultado = y==p.getY(); else resultado= (y+vy*t)==(p.getY()+p.getVy()*t); } return resultado; } // métodos de modificación /** modifica la posición en x de la partícula */ public void setX(double nuevaX) { x = nuevaX; } /** modifica la posición en y de la partícula */ public void setY(double nuevaY) { y = nuevaY; } /** modifica la velocidad en x de la partícula */ public void setVx(double nuevaVx) { vx = nuevaVx; } /** modifica la velocidad en y de la partícula */ public void setVy(double nuevaVy) { vy = nuevaVy; } /** modifica la posición de la partícula suponiendo que se mueve a la * velocidad actual durante t segundos y que parte de la posición actual. * @param t el tiempo en segundos */ public void posición(double t) { x = x + vx*t; y = y + vy*t; } }