The 3D sim solves the same PDE — a taut string of variable tension T(x) driven by a moving point force — by marching it forward in time with finite differences (leapfrog on every node, every frame). This 2D companion solves it with a completely different technique: it builds the tether's stiffness operator once,
μ ∂²y/∂t² = ∂/∂x( T(x) ∂y/∂x ) − γ ∂y/∂t + F(x,t)
diagonalizes it into true natural vibration modes φn(x) and frequencies ωn (an eigenvalue problem, solved with a symmetric Jacobi rotation algorithm), then represents the whole tether as a sum of independent 1-DOF damped oscillators — one per mode — each driven only by how strongly the climber's current position overlaps that mode's shape:
y(x,t) = Σₙ qₙ(t)·φₙ(x)
q̈ₙ + γ·q̇ₙ + ωₙ²·qₙ = F(t)·φₙ(xc(t))
This is the modal / spectral-analysis method used in real structural dynamics to identify which vibration modes a structure actually responds to — something the 3D sim's frame-by-frame nodal simulation never computes explicitly. Verified with a standalone Node script: reconstructing y(x,t) from all 79 modes reproduces the direct finite-difference trajectory to a relative RMS difference of ~1e-10% (the two methods diagonalize the identical discretized operator, so they must agree); truncating to the lowest 40 modes — what this sim uses for real-time performance — costs only ~0.75% RMS versus the full-mode reference, and driving the tether exactly at its mode-1 natural frequency produces roughly 60x more steady-state sway than driving off-resonance, confirming genuine resonant amplification rather than a rendering artifact.
- Climb speed — how fast the point force moves along the tether, bouncing between anchor and counterweight.
- Vibration amplitude / frequency — the strength and frequency of the forcing the climber injects; this is what gets projected onto each mode.
- Structural damping — a single γ applied identically to every mode (it is diagonal in the same basis as the stiffness operator, so it decouples exactly like the restoring force does).
- Mode bars (right panel) — live |qₙ| amplitude of the lowest 15 modes; the highlighted bar is whichever mode's natural frequency currently sits closest to the forcing frequency.