Presets
Playback
Parameters
Layers
Model check
The science
Spring lattice
Nodes of mass m sit on a square grid with spacing a = 0.1 m and are joined by structural springs and (optionally) half-stiffness diagonal springs that resist shear. Each spring pulls with F = k (l - L)(1 + β ε²), strain ε = (l - L)/L. With β = 0 this is Hooke's law; β > 0 gives the strain stiffening seen in rubber (the stress-strain curve of the fourth graph curves upward). Damping adds -c v per node and gravity -m g. The equations are advanced with velocity Verlet at 1/1500 s.
Closed forms used for the checks
A chain of springs transmits a pulse at c = a sqrt(k/m). A hanging column of n nodes stretches by Δ = m g n (n - 1) / (2k) at its bottom, because the spring below row j carries the weight of everything under it. An undamped lattice conserves KE + elastic energy + m g y.
Checks
(1) Pulse arrival time along a 24-node chain gives the wave speed. (2) Energy drift of an undamped stiffening lattice under gravity. (3) Static extension of a hanging two-column strip against the closed form.
Simplifications
Real rubber is an incompressible, viscoelastic network with Mullins softening and hysteresis; a spring lattice is only a coarse stand-in with no volume conservation or rate dependence. The sheet is 2D (no folding out of the plane) and has no self-collision. The 3D page uses position-based dynamics for a similar sheet; the stiffness numbers are not matched one-to-one.
What to try
- Drag the bottom corner of the hanging sheet and release it: it rings at the lattice frequency.
- Turn off the shear springs and watch the net collapse into floppy shapes.
- Raise beta and compare how far a heavy sheet sags.