proton-engine
Version:
Proton is a simple and powerful javascript particle animation engine.
27 lines (21 loc) • 659 B
JavaScript
export default class Integration {
constructor(type) {
this.type = type;
}
calculate(particles, time, damping) {
this.eulerIntegrate(particles, time, damping);
}
// Euler Integrate
// https://rosettacode.org/wiki/Euler_method
eulerIntegrate(particle, time, damping) {
if (!particle.sleep) {
particle.old.p.copy(particle.p);
particle.old.v.copy(particle.v);
particle.a.multiplyScalar(1 / particle.mass);
particle.v.add(particle.a.multiplyScalar(time));
particle.p.add(particle.old.v.multiplyScalar(time));
if (damping) particle.v.multiplyScalar(damping);
particle.a.clear();
}
}
}