Modeling spring motion in threejs.
CDN
import { Spring } from "//cdn.jsdelivr.net/gh/ycw/three-spring/src/index.js"
NPM
$ npm i ycw/three-spring
import { Spring } from "three-spring"
// Create
const spring = new Spring({
p: new THREE.Vector3(..), // pull position
q: new THREE.Vector3(..), // equilibrium position
f: 1, // frequency
k: 0.88, // amplitude attenuation per period
A: Infinity // amplitude constrait ( 0 = teleport )
});
const clock = new Clock();
renderer.setAnimationLoop(() => {
...
spring.update(clock.getDelta()); // Update
mymesh.position.copy(spring.position); // Get
});