Presets
Playback
Ball
Heavier balls need faster air and sit lower.
Air jet
Exit speed, nozzle diameter, tilt, spreading rate and turbulence.
Air
Density, and quick experiments.
Camera
Layers
Quality
Model checks
The science
The air jet
The air leaves the nozzle (diameter d0, speed u0) as a round turbulent jet. Far from the nozzle its speed profile is close to a Gaussian, u(z, r) = u_c(z) exp(-r^2 / b(z)^2), and the jet widens linearly, b(z) = d0 / sqrt(2) + a z with a about 0.11. Because the momentum flux rho integral u^2 dA = rho u0^2 pi d0^2 / 4 is conserved (the jet pushes nothing sideways), the centre-line speed must fall as u_c = u0 (d0 / sqrt 2) / b(z).
Why the ball hovers at a certain height
Drag on the ball is F_d = 1/2 rho C_d pi R^2 u_eff^2, where u_eff is the jet speed averaged over the ball. The weight (minus a small air buoyancy) is (m - rho V) g. Because u_c decreases with height, there is exactly one height where the two forces are equal, and it is stable: too low and the faster air pushes the ball up, too high and it falls back.
Why it does not fly out sideways (Bernoulli and Coanda)
Along a streamline p + 1/2 rho u^2 is constant, so the fast central air is at lower static pressure than the slower air at the edge (dp = -1/2 rho u^2 in the graph). When the ball moves off the axis, the side nearer the core sees the faster, lower-pressure air, so a net force pushes it back. The model uses F_r = 1/2 rho pi R^2 kappa [u^2(r + R) - u^2(r - R)] with a shape factor kappa = 0.45. The Coanda effect (the air clinging to the curved surface and being deflected) strengthens this pull; kappa is an empirical stand-in for it.
Tilting the jet
When the jet leans by an angle theta, gravity gains a sideways component m g sin(theta) that the restoring force must cancel. The model scans for a balance point inside the jet and reports an upper limit on theta; the time-domain simulation loses the ball a little earlier because axial and sideways motion are coupled.
Motion and turbulence
The ball is integrated in 3D with a fourth-order Runge-Kutta step. The relative air velocity makes the drag vector, so the ball is damped in all directions. Turbulent gusts are an Ornstein-Uhlenbeck force with a 0.15 s correlation time, scaled by the local dynamic pressure.
Simplifications
No ball spin or Magnus force, constant drag coefficient 0.47 (real values vary with Reynolds number), the jet is not deflected by the ball, the entrained room air and the nozzle's potential core are folded into the Gaussian model, the nozzle is drawn scaled to the chosen diameter, and the particles show a slow-motion flow.
What to try
- Start with the ping-pong preset and open the first graph: the ball settles at the balance height shown by the dashed line.
- Raise the jet speed slowly: the ball climbs, because the speed at the old height now exceeds what the weight needs.
- Press Knock the ball sideways: it swings back to the axis. The third graph shows the restoring force against the offset.
- Tilt the jet with the slider and watch the ball move off axis; find the angle where it drops out and compare it with the upper limit in the readouts.
- Choose Thin air at altitude: with less air density the ball hovers much lower for the same jet speed.
- Turn the gustiness up and watch the offset graph for the random walk around the axis.