Pinned-Foot Dance Move Produces 15x Larger Center-of-Gravity Excursion, Two-Link IK Model Shows
A simple two-link IK model converts a qualitative dance instruction into a testable geometric claim, giving developers a reusable template for turning a physical claim into a reproducible calculation with minimal code. The accompanying zero-dependency demo shows how to communicate a physical intuition without a build step or external model files.
A two-link IK model with just three points—ankle, knee, hip—separates two ways of performing a flash step from Chinese folk dance. When the foot is pinned and the upper body sways alone, the center of gravity projection peaks at 18.00 cm away from the support foot; when the hip translates in sync with the ankle, the peak is only 1.19 cm. That's a 15.13x ratio on excursion, and the approximate bending moment at the knee scales the same way, 71.16 N·m versus 4.72 N·m.
The model samples 61 points over one sinusoidal period for both modes, with fixed thigh and shank lengths and a hip height chosen by scanning to land in the reported 'semi-flexed' knee range. A pure Python script (standard library only) runs the numbers, and a zero-dependency Canvas demo runs the same equations in the browser, with the two implementations checked digit-for-digit against each other. The article also documents six pitfalls, from the reverse-joint IK solution to y-axis flipping in Canvas, and connects the solver to game industry IK (Foot IK, QWOP, Rain World).
Choosing a 3-point geometric model over full pose estimation trades realism for explainability: every output traces to a formula, making the causal chain visible even when the model ignores torsion and muscles.
The 15x ratio is a geometric magnitude, not an injury probability, and the article explicitly refuses to let it become clinical advice—a discipline worth copying in any engineering calculation that touches health.
The connection to game IK (Foot IK, QWOP, Rain World) puts the solver in a familiar frame: the same inverse kinematics runs in engines every frame. Treating a dance move as a two-link IK problem lets any developer who has debugged foot placement reason about it directly.
Writing the reverse-joint solution into a failure log and adding an assertion on knee-behind-ankle frame ratio is a practical habit that prevents a reintroduced bug from silently corrupting future results.