This is the flat 2D side-view companion to the 3D Swimming Hydrodynamics simulation, isolating one swimmer and two adjustable variables: body position and stroke technique. The equation of motion is Newton's second law along the direction of travel: m·dv/dt = F_thrust(t) − F_drag(v), with the quadratic fluid-drag law F_drag = ½·ρ_water·Cd·A·v².
Crucially, Cd and the frontal area A are not fixed here — both are interpolated live from the Body Position slider between a streamlined torpedo posture (A ≈ 0.10 m², Cd ≈ 0.25) and an upright, head-high posture (A ≈ 0.30 m², Cd ≈ 0.60). Raising the body out of a streamlined line triples the frontal area and more than doubles the drag coefficient, so at the same speed an upright swimmer fights far more drag — you can watch the Drag force readout jump when you drag the slider toward "Upright".
Thrust is a half-rectified sine tied to the stroke phase, max(0, F_peak·sin(phase)), so propulsion pulses once per stroke just as it does in the 3D model. The genuine energy tradeoff lives in propulsive efficiency η(rate): it peaks near a natural cadence (~45 strokes/min) and falls off at both very low and very high stroke rates, modelling real "arm slip" — thrashing faster than the water can be caught and pushed loses grip efficiency. The metabolic power required to hold steady speed is P_drag/η = (K_D·v³)/η, and dividing by speed gives the energy cost per metre. Winding the stroke rate up past the optimum raises speed a little further but the falling η makes every metre cost disproportionately more energy — a real, computed tradeoff, not a cosmetic one.
- Body Position — interpolates frontal area A and drag coefficient Cd between streamlined and upright postures.
- Stroke rate — cycles per minute of the thrust pulse; also shifts propulsive efficiency away from its optimum in either direction.
- Peak stroke force — the swimmer's raw pulling force per stroke, driving average thrust = F_peak/π.
- Swimmer mass — changes acceleration (m·dv/dt) but not the drag-balance terminal velocity.