package openmods.physics;
public class Point {
private FastVector current, previous, force;
double mass, inv_mass;
public Point(double x, double y, double z) {
this.current = this.previous = new FastVector(x, y, z);
this.mass = this.inv_mass = 1;
this.force = new FastVector(0.0, -0.5, 0).multiply(0.05 * 0.05);
}
public void setCurrent(FastVector v) {
this.current = v;
}
public void setPrevious(FastVector v) {
this.previous = v;
}
public FastVector getCurrent() {
return this.current;
}
public FastVector getPrevious() {
return this.previous;
}
public void update() {
if (this.inv_mass != 0) {
FastVector new_pos = this.current.multiply(1.99).subtract(this.previous.multiply(0.99)).add(this.force);
new_pos.x = (new_pos.x < 0)? 0 : ((new_pos.x > 1)? 1 : new_pos.x);
new_pos.y = (new_pos.y < 0)? 0 : ((new_pos.y > 1)? 1 : new_pos.y);
new_pos.z = (new_pos.z < 0)? 0 : ((new_pos.z > 1)? 1 : new_pos.z);
this.previous = this.current;
this.current = new_pos;
}
}
}