Ruler Rivers
Stream order is already a ruler sequence. Two order-n
streams meet to make an order-n+1, so order-n confluences thin out by a
factor of two per order — which is v₂, exactly. This basin is
grown from rule 30's edge run and nothing else, and then its
Horton ratios are measured against what real rivers do.
The network
Every confluence is at a generation where run(g) rises; the tributary's
order is v₂(g+1) and its length comes off the spectrum ladder.
Horton's laws, measured
Horton (1945) and Strahler (1952) found two ratios hold across real basins: the bifurcation ratio Rb (how many streams of one order per stream of the next) and the length ratio Rl. Nothing here was tuned to hit them — the numbers are whatever the sequence produced.
| order | streams | mean length | Rb | Rl |
|---|
Numbers to check against: real drainage basins run Rb = 3–5 and Rl = 1.5–3.5.
Why this isn't a costume
Rb lands on 3.00 and stays there. Not near three — on it, to every decimal the count allows, at every order below the top few where the sample is too small to mean anything. That is not a fitted parameter. It is what a ruler schedule does, and it happens to be where real basins sit.
The honest one: Rl runs low. Around 1.3–1.8 through the middle orders, against 1.5–3.5 in the field — the low edge of natural, not the middle of it. And order 1 breaks the pattern outright (Rl under 1), because headwaters here are leaves with nothing above them to shorten them. A real basin's headwaters are cut by the hillslope they start on. This one's aren't cut by anything.
What the spectrum adds. Tributary length comes off the ladder, not off
2v, so the jumps at v=6, 8 and 12 show up as confluences where
the river abruptly gets much bigger than the one before. Real geology does that too,
and noise-based generators never do — they have no reason to.
Same seed, same library, different world: Ruler Range →
The topology — which stream joins which, at what order, at what length
— is transcendental-free and identical on every machine. The drawing uses
sin and cos to turn that topology into coordinates, and is not bit-exact across
platforms. That is the right split: a game needs the network to agree, not the
brush-strokes. Shares assets/rulerlib.js with
Ruler Range.