The shoebill (Balaeniceps rex) is a classic sit-and-wait ambush predator: it stands almost motionless in shallow, murky water and waits for air-breathing prey (lungfish, catfish) to surface within strike range before collapsing forward in an explosive, near-instant strike. This lab turns that trade-off into a probabilistic model rather than a decorative animation:
detectionRadius = R0 · (1 − 0.65·turbidity)
triggerDistance = Rmax · (1.05 − 0.85·patience)
strikeWindup = 0.6s − 0.4s·strikeSpeed
hitProbability = clamp(1 − dStrike/Rmax, 0, 1)
· (1 − 0.35·turbidity)
· (0.6 + 0.4·strikeSpeed)
energyCost = 8 + 10·strikeSpeed (per strike)
energyGain = +35 (per catch)
Only fish that are surfaced for air and inside the detection radius are visible to the shoebill; murkier water shrinks that radius. Once a visible fish crosses the trigger distance, the bird commits to a strike after a short windup — during which the fish can still move or dive, so a fast, low-patience strike is thrown from farther away (more misses) while a high-patience strike waits for the fish to come very close (fewer, more reliable strikes). Every strike burns energy regardless of outcome; only a catch replenishes it. Push patience and turbidity to the extremes and watch the success-rate and energy readouts diverge — that tension between opportunity and cost is the actual mechanism behind real ambush-predator foraging theory, not just plumage on a template.
- Dashed ring — current detection radius (shrinks with turbidity).
- Solid ring — strike trigger distance (shrinks with patience).
- Bright fish — surfaced and breathing (visible to the shoebill); faint fish — submerged.