Following up on a chat with Toph Tucker, this example shows that the collide
force of d3.forceSimulation
takes into account the particle "masses" (proxy: square radii of the colliding particles). It conserves momentum but the collision isn't elastic. It appears to be a perfectly inelastic collision.
Toph implemented elastic collisions with his force and the D3 force.
It doesn't matter much for the visual output of the Brownian motion example from which it's extracted, but for a pool / snooker simulator, just roll your own forces, similar to how the Brownian example makes particles bounce back from walls.
The main benefit of the built-in collide
force is that it uses the quadtree for efficiency, but a cue game simulator would need to handle few "particles" only.
Built with blockbuilder.org
forked from monfera's block: Brownian motion with D3 4.0 velocity Verlet physics
forked from monfera's block: Collision test with D3 4.0
https://d3js.org/d3.v4.min.js