workshop private

← all creations

Taper

mechanics · created 2026-09-06

A whip as an inextensible chain whose mass runs out — the loop you throw goes supersonic not because your arm is fast but because there is almost nothing left in front of it, and the crack lands at 69% of the whip whatever you do.

physicssimulationgame-feelcanvas

Your hand is capped at 18 m/s, which is roughly what a human arm does. The tip of this whip goes through 640. Nothing in the code pushes it. The only thing that happens between those two numbers is that the whip gets thinner.

The one asymmetry

A whip is two facts fighting each other. It cannot stretch — 2 m of it is 2 m of it, always. And its mass per unit length falls off geometrically from butt to tip, so the far end has almost nothing in it.

Throw a loop into a chain like that and the loop has to keep going. But the further it travels the less mass is left in front of it to carry the energy, and a fixed budget of energy carried by a shrinking mass means one thing:

½ m v²  roughly constant   ⇒   v ∝ 1 / √m

That is the whole mechanic. Everything below is measured out of the shipped module at its shipped settings — 48 segments, 96 sub-steps, 2 m, 220 g, hand capped at 18 m/s.

Watching it happen

Here is one throw at a 400:1 taper, sampled as the loop runs out. v·√m is the invariant the argument above predicts:

loop is atstill movingatv·√m
106 cm9.2 g26 m/s2.45
131 cm4.0 g47 m/s2.97
153 cm1.8 g74 m/s3.17
172 cm0.8 g112 m/s3.16
180 cm0.5 g149 m/s3.30

The mass drops by 18× and the speed comes up 5.7×, while the product wanders by about 30% and does not trend the way either of its factors does. That is close to conservation and honestly not exactly it — the loop is still drawing on the whip behind it the whole way down, so it does slightly better than √. Then the last 20 cm arrive, the popper has 0.02 g in it, and the number goes vertical: 149 → 641 m/s in the final stretch of the run.

The demo puts those two columns side by side as the only gauges on the screen — tip speed climbing and grams still moving falling — because watching one without the other is the version of this you already believe.

The crack is not in your arm

Same cast, same 18 m/s hand, same 2 m of cord. Only the mass distribution changes:

butt : tippeak tip speedbest cast, snapped early
1 : 1 (a rope)71 m/s0.21 Mach0.48 Mach
16 : 1186 m/s0.54 Mach1.08 Mach
64 : 1323 m/s0.94 Mach1.81 Mach
128 : 1438 m/s1.28 Mach2.22 Mach
256 : 1559 m/s1.63 Mach2.68 Mach
400 : 1 (shipped)641 m/s1.87 Mach3.03 Mach
1024 : 1845 m/s2.46 Mach3.87 Mach

Fitting the whole range gives peak ∝ ratio^0.38, against the 0.5 that pure energy conservation in the loop would ask for — damping and the mass that never joins the loop eat the difference. The [ and ] keys walk that table live. Put it on 1:1 and you have a skipping rope: you can flail it as hard as the arm cap allows and the cards just sit there, because 163 m/s is not a crack, it is a slap.

At 35.6× amplification the tapered version is not doing something your arm could do if you tried harder. It is doing something your arm cannot do at all.

What the taper actually buys you in the game

Not just a bigger number — a wider window. The tip is only above Mach 1 for a few milliseconds, and everything it sweeps in that window breaks:

tapersupersonic forarc covered while up there
128 : 10.79 ms32 cm
256 : 13.06 ms126 cm
400 : 14.00 ms167 cm
1024 : 16.23 ms302 cm

So the taper is really a difficulty slider on how forgiving your aim has to be. At 128:1 you get a 32 cm licence and you had better have put it somewhere; at 400:1 you carve a metre and a half of arc through the board and take everything standing on it.

Four milliseconds is the honest figure and it is worth sitting with. The demo runs at 0.15× so a cast takes about a second and a half of your time; the whip thinks the whole thing lasted 200 ms, and the part you were aiming lasted four of them.

You do not get to choose the range

This is the bit that makes it a game rather than a physics toy. Across 18 casts spanning sweeps from 30 to 85 cm and reversals from 50 ms to 220 ms — a 3× range of peak speed, 390 to 1111 m/s — the crack landed:

121 to 145 cm from the hand. Mean 137 cm. That is 69% of the whip, every time.

You are not ranging a projectile. The whip has one radius and it is going to use it. What you actually control is:

So the dashed ring in the demo is not a targeting aid, it is a statement of fact: the crack lands on that circle. Move the circle. The ten cards are laid out across the reach range on purpose — a short cast takes the three nearest, a long one cannot reach back for them, and the board goes down in five casts on a ladder of sweeps, never in one.

Controls

Reuse

src/whip.mjs is a framework-free ES module that draws nothing:

Cost is about 1.1 ms per step() in Node at the shipped settings, and the demo holds 61 fps in Chromium through a cast.

Gotchas