This is a typescript adaptation of verlet-js, with some modifications.
The goal is to provide a simple Verlet physics simulation that can be easily imported into various projects, without much overhead.
- Built-in 2D Vector class
- Particles and Constraints for building a Simulation
- Can be used with any graphics library
- No dependencies
import { Simulation, Vec2, Particle, DistanceConstraint } from 'verlet-ts';
// Create simulation
const simulation = new Simulation(500, 500);
// Create and add Particle
const p1 = new Particle(new Vec2(20, 10));
p1.pin() // freeze particle
simulation.particles.push(p1);
// Shorthand
const p2 = simulation.addParticle(100, 10);
// Create and add constraint
const constraint = new DistanceConstraint(p1, p2, 0.05);
simulation.constraints.push(constraint);
// [..]
// In your update / drawing loop
simulation.update(25);
// Implement drawing logic by looping over simulation.particles
// Or keep track of particles in your own datastructures and draw from there.
Compared to verlet-js, this library has been reduced to include only the necessary functions for the physics simulation itself, there are no built-in drawing functions, no built-in helpers to construct objects and no built-in facilities to compose shapes. Some of these features have instead been moved to the examples as a reference.
/lib
– Library core/src
– Entrypoint for examples/utils/drawing.ts
– Drawing and interaction logic for examples/examples/
– Example sketches