howfishthink
Model documentation

How the optics model works

A simulation nobody can check is just an opinion with better graphics. This is the whole model, including the parts that are approximations and the parts that are wrong.

The chain

  1. Down. Sunlight enters the water and travels to the lure's depth, losing energy per wavelength (Beer-Lambert: I = I₀·e^(−Kd·d)).
  2. Reflect. The lure reflects some fraction of whatever survived.
  3. Across. That reflection travels the viewing distance to the eye, losing more.
  4. Veil. Backscatter adds a glow along the line of sight, raising the black level. In dirty water this — not darkness — is what makes a lure vanish.
  5. See. What arrives is integrated by that species' cones, blended toward rod (monochrome) vision as light falls.

Every step but the reflection is linear in radiance, so the whole per-pixel transform folds into one 3×3 matrix plus an additive veil. That is why it runs at full frame rate on a phone.

Water types

Sampled at 8 bands (420–700nm). The shape is the point: each water type has a different transmission window, and that window is the real reason colour advice differs from lake to lake.

Water420460500540580620660700Backscatter
Clear0.040.030.040.070.120.250.400.650.05
Green / algal0.350.220.130.120.170.300.480.750.16
Stained / tannic1.300.850.500.350.300.380.550.850.22
Muddy / suspended sediment1.801.501.251.151.151.251.451.800.55

Diffuse attenuation coefficient Kd, per metre, per band.

Eyes

SpeciesCone peaks (nm)Low-light gainNotes
Human (reference)440 / 545 / 578Trichromat baseline. This is the view you think you tied on.
Largemouth bass535 / 6141.6×Dichromat, green + red. Strong on chartreuse/red separation, weak on blue.
Walleye530 / 6054.5×Dichromat with a tapetum lucidum. Superb in low light; red-orange biased.
Rainbow trout434 / 531 / 5761.3×Trichromat (UV cone too, when young). The best colour vision on this list.
Northern pike525 / 6151.8×Dichromat, ambush predator. Tuned for contrast against a bright ceiling.
Bluegill460 / 530 / 6201.1×Trichromat. Sight-feeder on small forage; good colour discrimination.

Most freshwater gamefish are dichromats: two cones, red-shifted relative to ours. They are not colour-blind — they discriminate well along their own axis. The axis just is not yours.

Two decisions worth defending

The reference observer

A photograph is already a human-trichromat encoding of a spectrum. Before re-viewing it through a different eye, that encoding has to be undone, or the broad overlap between our own cone curves shows up as a colour cast on every render. So the model inverts a human-at-the-surface observer first. The check you can run by eye in one second:human + clear + 0m renders exactly the input image. Everything else is a departure the physics has to earn.

Light adaptation

A real eye is not a light meter. Pupil, photopigment regeneration, tapetum and neural gain all pull the operating point toward ambient — a fish at 6m in stained water is not "in the dark" from its own point of view. We model that as grey-world adaptation, gaining the response until the background sits at mid-luminance. The gain is capped, and the cap scales with the species' low-light hardware. Past it the image really does go black, because "there is not enough light here for this fish to solve this problem" is a legitimate answer.

What the score measures

Detection contrast is three numbers, because a fish has three ways to pick a target out of the background and they fail under different conditions.

Pattern earned its own number after the mean-colour score rated firetiger as mediocre in green water. The average of firetiger is close to a green lake's background — what makes it visible is the hard dark barring inside it, and an average is exactly the operation that destroys that information.

The Tank: lure physics

A separate model, on the same principle. A lure is a grid of components; the question it answers first is whether the thing swims at all.

The failure being modelled is specific and real. An unbalanced crankbait does not swim badly — it rolls onto its side and skates, and catches nothing. That happens when the centre of mass sits at or above the centre of buoyancy, leaving no righting couple, or when the lip's drag overpowers the couple that does exist.

Materials

ComponentDensity kg/m³FillDisplaces
Balsa160100%100%
Cedar380100%100%
ABS plastic104035%100%
Closed foam90100%100%
Lead ballast1134014%100%
Tungsten193009%100%
Rattle chamber250100%100%
Lip120030%18%
Hook hanger78008%5%
Line tie78004%2%

Fill and displaces are load-bearing, not fudge factors. Without them a "lead ballast" cell is a solid cubic centimetre of lead and a hook hanger is solid steel — which made a 12cm balsa crankbait weigh 66g and sink like a bolt. Real ballast is a small slug set into the body, so the cell still displaces a full volume; a hook hanger is thin wire hanging outside it, so it displaces almost nothing while still acting as keel weight.

What decides the action

The overturning couple uses the vertical offset between the lip and the centre of mass. An earlier version used the horizontal offset, which is a pitch/dive term rather than the couple that rolls a bait out — it made every sane starter bait read as "blows out."

Where this model is wrong

If you know a coefficient here to be wrong, or have measured data that contradicts it,tell us. Being corrected is cheaper than being confidently wrong in public.