A swan paddles around a lake. The wake behind her is solved from linear deep-water wave theory, so the 19.5 degree Kelvin wedge, the hull-speed limit and the wave drag all come out of the same field that the cygnets ride on.
The science
Kelvin wake. A steadily moving disturbance on deep water radiates waves whose phase speed along the track equals the swan's speed. With omega^2 = g k this gives transverse waves of wavelength lambda = 2 pi v^2 / g, and the stationary-phase analysis gives a wedge of half-angle arcsin(1/3) = 19.47 deg, independent of speed. The page checks that number two ways: by maximising tan(alpha) = sin(psi) cos(psi) / (1 + sin^2 psi) and by measuring the wedge in the solved field.
How the field is solved. The swan's weight is a Gaussian pressure patch p(x,y) with total force m g. In the swan's frame the water flows past at speed v and the steady linear free-surface condition in Fourier space is eta_hat = k p_hat / (rho ((v kx + i e)^2 - g k)) where e is a small Rayleigh damping that makes the waves fade downstream. Two inverse 2D FFTs on a 256 x 128 grid (16 m x 8 m) give the surface and its slope. At very low speed this reduces to hydrostatics, eta = -p / (rho g), which is another check.
Hull speed and Froude number. Fr = v / sqrt(g L). When the transverse wavelength equals the waterline length, v = sqrt(g L / 2 pi) (Fr = 0.399) and the body sits between its own bow and stern wave crests; wave drag climbs steeply there, which is why small ducklings and cygnets, with Fr above 0.4 at the same speed as their mother, struggle.
Drag. Friction R_f = 1/2 rho v^2 S C_f (1 + k) with the ITTC-57 line C_f = 0.075 / (log10 Re - 2)^2, form factor k = 0.3 and wetted area S = 5 V^(2/3) for displaced volume V = m / rho. Wave resistance is read from the solved field as R_w = integral p d(eta)/dx dA. Mechanical power is R v; metabolic power divides by a paddling efficiency (a few percent to ten percent for paddling birds; the slider is illustrative).
Cygnet drafting. A floating body on a sloping surface feels a push F = -m g (d eta/dx). Each cygnet's push is computed from the surface slope averaged over its own length, taken from the mother's and siblings' wake fields (quasi-static Froude-Krylov style estimate). Reports of large energy savings in swimming ducklings exist in the literature (they quote tens of percent up to values above 100 %); this page does not reproduce them quantitatively and a human should check the references before quoting any number.
Honest simplifications. Linear theory (wake height small), deep water, a Gaussian pressure patch instead of a real hull, so wave drag is only a rough guide and overestimates blunt bodies; no viscous wake, no paddling unsteadiness, no wind waves; the swan moves on a circle but the wake is drawn as for straight motion; vertical wake height is exaggerated by the slider. The wake below about 0.5 m/s has waves shorter than the grid can show and is nearly invisible (and nearly absent).
Model and assets: Blender (swans, shore, reeds, willow) + Three.js. Independent educational model.