workshop private

← all creations

Carrydown

mechanics · created 2026-09-28

A bowling ball is a sphere sliding on a film it is editing as it goes. Two results fall out and neither is the one the sport teaches. First, for an inert sphere the whole turn is decided at release: friction moves the finish of it from 26.7 ft to 54.9 ft across a doubling of mu, and the finishing direction is the same 4.960 degrees in every case, so oil chooses where the ball turns and never how much. Second, the forgiveness everyone credits to the lane is a product, not a sum — a shaped pattern with an inert sphere gives 2.50 boards of miss room, a flaring core on a flat pattern gives 1.00, the same as no core at all, and the two together give 4.75. Then the lane starts moving. Forty shots down one line and the towel decides the sign of the breakdown: never wipe and the ball finishes 7.67 boards light with its entry angle halved, wipe every shot and it finishes 0.97 boards high — 6 strikes against 26, and the entire difference is 0.53 mL of oil, three percent of what the machine laid down.

physicssimulationcanvasgame-feel

A bowling lane is about twenty millilitres of oil in a deliberate shape, and a bowling ball is the thing that shape is fighting. The interesting part is not that the oil steers the ball. It is that the ball steers the oil back, a few microlitres at a time, so the lane you are reading in the tenth frame is one you built yourself in the first.

Three things stack up here. A rigid sphere sliding on a plane. A film of lubricant setting the friction under it foot by foot. And a transport rule for that film, because the ball picks oil up where it is thick and puts it down where it is thin. Only the third is unusual, and it turns out the first is where the surprises are.

The turn is over before the ball lands

Put a ball on the lane spinning about a tilted axis. The contact point is moving backwards and sideways relative to the floor, and friction only ever opposes that slip, so it pushes sideways too. That is the hook, and there is nothing else in it.

Now watch what friction does to the slip itself. Both the deceleration and the angular acceleration are along the same line, so for a uniform sphere the slip vector shrinks without ever rotating, at a rate of (7/2)·µg — and the velocity change over the whole slide is

Δv = −(2/7) · u₀        u₀ = the slip at release

µ is not in it. Friction sets the clock, not the answer. So the direction a shot is going to finish in is fixed the moment it leaves the hand, and the oil can only choose where along the sixty feet that finish happens.

The demo checks this the blunt way. Take one release — a slip of 5.95 m/s — and roll it on four lanes whose films span a factor of 2.06 in friction coefficient, 0.0728 to 0.150. That moves the point where the turn finishes from 26.7 ft to 54.9 ft, a spread of 28 feet of lane. The finishing directions are:

4.961°   4.960°   4.960°   4.960°

A spread of 0.64 millidegrees, against a closed form that predicts 4.989°. And after the slip is gone, nothing steers a rolling sphere on a flat floor at all: the last 10.9 ft of that shot is a straight line to within 0.000000 mm.

Which means there is exactly one way to lose entry angle, and it is not friction. It is running out of lane before the turn is done. Push the film past where the ball can finish — µ of 0.0214 — and the direction collapses from 4.96° to 0.08°. The cliff is sharp, and everything else in the piece falls off it.

Thrown harder is not thrown better

The same result makes speed a savage control, and in the direction nobody guesses. On a fresh house shot, one line, everything else held:

ball speedentry boardentry angle
15.5 mph26.758.87°through the face
17.5 mph17.885.94°strike
19.5 mph12.093.25°light

The slow ball gets the bigger angle — 2.73× the fast one for four miles an hour off the gas — because speed does not reduce how much the ball turns, it steals the lane the ball needed to do it in. One mph over the strike line puts the ball 3.23 boards light. Nobody is aiming at a 3.23-board target; they are aiming at a speed they cannot feel to a quarter of a mile an hour.

The wall is not in the oil

House bowlers will tell you the lane is what forgives them: heavy oil through the middle, dry at the edges, so a ball sent too far right finds friction and comes back. It is a good story and it is half of one.

Measure it. Take the widest run of launch boards that still strikes when you move your feet and keep your target — the thing the sport calls area — and ask it of four combinations:

patternballmiss room
flat, even 14 µLinert sphere1.00 boards
flat, even 14 µLflaring core1.00 boards
house, 25:4 crowninert sphere2.50 boards
house, 25:4 crownflaring core4.75 boards

The core is worth nothing at all on a flat pattern — the same 1.00 boards as a lump of rubber. The pattern is worth 1.5 boards to a ball that cannot flare. Together they are worth 3.75. Forgiveness here is a product, not a sum, and neither factor does anything on its own.

The reason is the first result. An inert sphere turns a fixed amount no matter what it rolls over, so a lane shape cannot correct a bad line, only move where the error shows up. A real ball hides an asymmetric core: its axis migrates as it slides, it rolls on a fresh ring of cover every revolution instead of re-treading its own oiled track, and the core keeps feeding back part of the side roll that friction is removing. Model it as exactly that — the core replaces a fraction FLARE of the lateral slip decay — and the total turn stops being a constant and becomes an integral over the friction the ball actually met. Only then does a shape have something to bite on. On the wall view the orange curve visibly flattens as it crosses the pocket; the purple one cuts straight through it and keeps going.

Then the lane starts moving

Oil transfers down a gradient. The ball carries a film of its own, and per foot of travel it trades with the lane in proportion to the difference:

dq/dft = EXCHANGE · (lane film − ball film)

One sign flip is the whole of it. Through the oiled front the lane is thicker and the ball loads up — that is depletion, and it makes the ball hook earlier. Past the end of the pattern the ball is the thicker of the two and it unloads onto boards that were never meant to have oil on them — that is carrydown, and it makes the ball skid longer. Nobody chooses. It falls out of which side of the difference the ball happens to be on, and the two effects push the same shot in opposite directions.

Which one wins is decided by a towel.

Oil the ball keeps goes back onto the lane further down. Oil the towel takes leaves the building. Forty shots down one line, nothing else changed:

never wipewipe every shot
entry board, shot 1 → 4017.88 → 10.21 (7.67 boards light)17.88 → 18.85 (0.97 boards high)
entry angle5.94° → 2.55°5.94° → 5.26°
breakpoint43.0 ft → 49.2 ft43.0 ft → 42.8 ft
strikes6 of 4026 of 40
line dies on shot727
miss room, fresh 3.75 boards0.252.00

Opposite signs. The unwiped ball loses its angle as well as its line, because carrydown is precisely the mechanism that makes it arrive before it has finished turning — the one way the angle can be lost. And the wiped ball does not escape the transition, it reverses it: lightest at shot 11 (board 17.08), then back through the pocket and highest at shot 32 (board 20.38), because once carrydown is being towelled away the depletion underneath it is all that is left.

The oil budget is conservative except for the towel: after forty unwiped shots, 15.767 mL laid, 15.737 mL still on the lane and 0.030 mL on the ball. Wiping takes 0.53 mL out of the system over those forty shots — three point four percent of the film, about a tenth of a teaspoon — and that is the entire difference between six strikes and twenty-six.

Using it

src/carrydown.mjs is framework-free and has no DOM in it. SI internally, boards and feet at the edges.

import { Lane, Session, housePattern, roll, missRoom } from './carrydown.mjs';

const s = new Session({ lane: new Lane(housePattern({ lengthFt: 40 })), wipe: 1 });
const res = s.throwOne({ board: 23, angleDeg: -2.05, speedMph: 17.5 });
res.entry;        // { board, angle, speedMph, t }
res.breakpoint;   // where the ball got furthest right
res.carry;        // { strike, score, leave, label }

roll(lane, shot, opts) never touches the lane — call .commit() on the result when the shot counts, which is what Session.throwOne does. opts.flare is the knob the third section is about; opts.transport: false turns the whole oil-moving apparatus off, which is what the survey functions (strikeArea, bestLine, missRoom, bestRoom) use so that asking a question about the lane does not change its answer.

What is a lie in here

The ball is a uniform sphere with a fudge bolted on. A real core migrates its axis through a genuine rigid-body precession; FLARE is a scalar standing in for that, chosen so the trajectories come out the right shape — skid to about 30 ft, turn through the 40s, breakpoint around 43 ft at board 9, and an entry angle in the 4–6° band that USBC’s carry work keeps pointing at. The two friction coefficients are fitted the same way rather than measured. The carry model is a deterministic surface over pocket error and entry angle, not pin physics, because a map of which shots strike is only readable if the same shot always answers the same way.

None of that touches the three results, which is the point of checking them the way scripts/screenshot-demo.mjs does — twenty-one claims, re-derived inside the running demo on every build, including the two that hold identically: the finishing direction across a doubling of friction, and the straight line after the slip runs out.