The algorithm
- Randomly spaced radial cracks split the surface into wedges.
- Each wedge is recursively bisected by straight cuts, angled off the radial direction and placed off-center.
- Splitting stops below a target area that grows with distance² from the impact, scaled by a random grain each branch inherits.
- Pieces stay convex and tile the original exactly.
Initial force · resulting 3D speed
0 · weak
- Strength falls off exponentially with distance from the impact, to about 37% every 180px.
- Pieces are pushed outward, with a sideways swirl and a push toward the viewer.
- Hits near an edge add a shared push toward the element's center.
- Each piece gets ±40% strength and a slightly randomized direction and spin.
- Speed and spin are capped; colors use px/s of simulation time.
Inspect a piece
Current tuning & repeatability
The seed stays fixed until you change it. This page calls
fracture() and sampleImpulse() from
@abeall/fracture/algorithm with
seededRandom(seed); the values below are the defaults.