Two equal spheres, a cloth and a rubber rail — and every one of the shelf's mechanics equations turned into a shot. Momentum and energy give the tangent line; friction between the balls gives throw; the tip's offset gives spin; the cloth turns that spin into follow, draw and stun. The lab below runs those equations live — set the shot up yourself: drag both balls, pick a pocket, and watch what speed does. It is the same physics, and the same numbers, that the Pool Sauce engine integrates.
Drag the cue ball or the object ball anywhere on the cloth; click one of the six 4½″ pockets to aim at it. The cue is always aimed at the ghost ball — and when the cue ball is on the wrong side for a direct pot, the lab aims a one-rail bank instead, with the cushion's real rebound (not a mirror) solved into the contact point. Whether the shot actually drops is then up to speed, spin and throw.
No rails, no pockets, no rack: two balls and the moment they touch. Where you strike the object ball decides where it goes and where the cue ball goes — and side spin bends the first of those, which is the part that costs frames. Drag the contact point around the object ball, add side, and watch both paths answer. Everything here is the same collision the shot lab runs; it is just the only thing on the table.
Throw is not a fixed number of degrees. It rises as the surfaces rub harder and falls as they slip faster, so a soft shot throws more than a firm one and the object ball drifts further the longer it has to travel. The curves are this shot at every strike on the scale; the amber mark is where you are.
The diamonds are a calculator bolted to the rails. Two systems that use it are drawn here — the two-rail mirror, which is pure geometry, and corner five, the three-rail system every carom player learns — and both are run against the same cushion model as the rest of the page. That is the point: the mirror is exact only for a ball that loses nothing at the rail, and corner five is an empirical system, calibrated for running side at one particular pace. Drag the balls, then move the speed and the side and watch the arithmetic drift out from under you.
Off the tip a struck ball slides: the cloth is dragging one way and the ball is spinning another. Friction eats the difference until the surface speed matches the ball speed — natural roll — and from then on the ball has forgotten what you did to it. Everything you meant by draw, stun or follow lives in the stretch before that. Set the three things that decide it and watch where the crossing falls.
Two ways to make the table ask something of you. A drill lays the balls out for its level and moves you up on a pot, down on a miss — ten levels, each a little harder. The run-out is a game: every executed shot advances the table, so the cue ball you park is the cue ball you play next. Both drive the table in the shot lab, and starting one takes you there.
The conditions — clean hit, no rail, kick first, three rails, called pocket, pocket speed, carom, nothing else moves, safety — stay on the shot lab itself, because they grade the shot you are aiming right now and you want to watch them while you drag.
Positions worth knowing, and a shelf for your own. Each one loads onto the shot lab exactly as stored — the balls, the pocket, the strike, the tip and the side — so a layout is a shot you can hand to someone else. Save what you are looking at, and it stays in this browser; copy its link and it travels.
The lab runs on these — quoted from poolsauce/constants.py in the pool-sauce-engine repository, so the page and the engine never disagree on one. Where the engine has no value yet (ball–ball friction, cushion friction) the literature's is used and marked.
Physics from the Equations shelf; constants from pool-sauce-engine. Coriolis, Théorie mathématique des effets du jeu de billard, 1835, had most of this; the throw model follows Alciatore (The Illustrated Principles of Pool and Billiards, technical proofs). Nothing here is a substitute for a table.