workshop private

← all creations

Sweep

mechanics · created 2026-09-07

A curling stone, and the one thing about the broom nobody tells you — every metre of it buys the same 15 cm of distance no matter when you spend it, and only the curl knows the difference.

physicssimulationgame-feelcanvas

The stone leaves your hand at 2.30 m/s, which is walking pace for a toddler, and then does nothing for nineteen seconds except slow down and turn. You are not allowed to touch it. The only thing you get is a broom, and the broom does exactly two things — it makes the ice slippier, and it makes the stone go straighter.

Everyone learns the first one. The mechanic is in the second.

Friction is per metre, turning is per second

That sentence is the whole piece, and it is not a metaphor — it is two lines of the integrator.

Friction takes energy out of the stone per unit of distance. A sweep that cuts friction by 15% over a stretch of length L hands back 0.15 × L metres of extra slide — and nothing in that expression says where L was. Sweep four metres at the start of the run or four metres at the very death and the stone finishes in the same place, to the centimetre.

Turning happens per unit of time. The stone’s heading rotates at a constant rate the whole way down — about half a degree a second, nine degrees in total — and it spends most of its seconds nearly stopped. Which is why curl, seen from above, looks like something the stone decides to do at the last moment:

the last…is this much of the slideand carries this much curl
16 m85% of the time1.13 m — 94%
8 m60% of the time0.78 m — 65%
4 m42% of the time0.46 m — 39%
2 m29% of the time0.26 m — 21%
1 m20% of the time0.13 m — 11%

Forty per cent of the time buys eleven per cent of the distance and thirty-nine per cent of the curl. Nothing dramatic happens at the end. The stone is just going slowly enough that a constant turn rate finally shows up.

Four metres of broom, spent in five different places

Same release. Same handle. Four metres of ice polished, moved down the sheet a window at a time:

broom windowstops atdistance gainedcurl leftcurl lost
none21.90 m1.20 m
0–4 m22.51 m+0.611.08 m0.12 m
4–8 m22.51 m+0.611.10 m0.10 m
8–12 m22.51 m+0.611.12 m0.08 m
12–16 m22.50 m+0.611.15 m0.04 m
16–20 m22.50 m+0.601.19 m0.01 m
the last 4 m22.50 m+0.601.21 m−0.01 m

The distance column is a constant. Across the whole sheet it moves by 0.8%, and that residue is the swept window sliding off the end of a shortening slide, not physics. The curl column moves by an order of magnitude.

So the broom is not one control with a cost. It is a range control that is free, plus a line control you did not ask for and cannot switch off, and the second one is priced entirely by when you use it.

The bottom row is my favourite and I did not predict it: sweeping the final four metres adds a hair of curl. Cutting the friction at the death buys extra seconds of crawling, the heading keeps rotating through all of them, and the turn you gain from the extra time slightly beats the turn you gave up. It is 0.01 m — noise, not a strategy — but it is the right sign, and it is the clearest possible statement that curl is a clock and not a distance.

What that costs you in the game

Here is the demo’s second scenario, measured. A guard on the centre line 1.55 m in front of the house, a yellow stone lying 0.95 m from the button, one red stone, and eight metres of broom. Every row is the same release speed, the same broom line, the same handle. The only variable is when the broom goes down:

past the guardstops atfrom the buttoncurl
no broom at all+0.03 m(21.19, 0.16)0.78 m1.14 m
all 8 m from release+0.33 m(22.39, 0.46)0.64 m0.91 m
held until 16 m+0.05 m(22.11, 0.20)0.25 m1.16 m

All three are shot stone; only one is a shot. The early sweep spent all 8 m of broom and gained 1.20 m of slide; the held sweep ran out of stone at 6.1 m and gained 0.92 m — both exactly 0.15 m per metre of broom, which is the invariant from the table above showing up in a real shot rather than a test rig. What the two do not share is where they finish across the sheet. The early one arrives 46 cm off the centre line instead of 20, sitting out in the open on the wing where anything can hit it, because a quarter of a metre of curl was spent flattening a part of the path that was never the problem.

That is what panicking looks like. You throw, it feels light, the broom goes down at the hog line, and the stone gets there. It just gets there straight.

The broom is a correction, not a boost

Which leaves the real reason to hold it, and it is not physics. At the moment of release you do not know whether the weight was right. Ten metres later you do. Sweeping early spends a free, timeless resource on a guess; sweeping late spends the identical resource on a measurement. The demo makes that concrete by drawing a dashed ring at where the stone stops if the broom comes off right now — watch it creep down the sheet while you hold, and the game stops being about power and starts being about patience.

The two dashed lines before you throw are the same idea stated up front: the path with no broom, and the path with every metre of it spent from release. Everything you are able to do with that stone is between those two lines. If the shot you want is not in there, the broom cannot save you and you should throw a different weight.

Controls

Reuse

src/curling.mjs is a framework-free ES module and draws nothing:

A whole 19-second slide at dt = 0.001 is about 1.4 ms in Node, so projecting forward every frame is free.

Gotchas