PYTHON · NUMPY
The Gradient That Lies
Live ferromotion-core: a penalty contact and a rigid impact on the same drop, with the rigid Jacobian computed by saltation matrix and verified against finite differences to 8e-10. One slider for stiffness, three buttons for the timestep. Damping is scaled as 2*zeta*sqrt(k) so the realised restitution stays fixed and only the contact resolution changes - otherwise the sweep would be comparing different physics.
You read
the arrays and values already in scope
You change
the code you write in each cell
Fixed
the dataset and the checks that grade you