Your record on this device: no games yet
A service is struck for you, at the instant it was solved for. What you choose about a service is its spin, its length and its line — the timing is not a real choice there, because the solved stroke only works at the height it was solved for.
In a rally, timing is a real input. The racket reaches the ball 45 ms after you press, so pressing early or late meets the ball at a different height and sends it somewhere else. Nothing is aimed for you: where the ball lands is whatever the contact and the flight make of the five numbers a stroke is.
| Playing surface | 2.74 m long, 1.525 m wide, 0.76 m above the floor | 2.1.1 |
|---|---|---|
| The bounce | a ball dropped from 30 cm must rebound about 23 cm | 2.1.3 |
| Lines | white side and end lines 2 cm wide | 2.1.4 |
| Centre line | 3 mm wide, for doubles | 2.1.6 |
| Net | top 15.25 cm above the surface, posts 15.25 cm outside each side line | 2.2.2, 2.2.3 |
| Ball | 40 mm across, 2.7 g, plastic, white or orange and matt | 2.3.1–2.3.3 |
| Racket | any size, shape or weight; blade at least 85% natural wood; sandwich rubber under 4.05 mm; black on one side and a bright colour on the other | 2.4.1–2.4.6 |
| Service | from an open palm, thrown near vertically without spin, rising at least 16 cm, struck as it falls, behind the end line | 2.6.1–2.6.4 |
| A game | first to 11, or from 10–10 the first to lead by 2 | 2.11.1 |
| Service order | the receiver becomes the server after every 2 points, and after every 1 from 10–10 or under expedite | 2.13.3 |
| Ends | change after each game, and at 5 points in the last possible game | 2.13.7 |
| Expedite | after 10 minutes in a game, unless 18 points have been scored; then one service each, and 13 correct returns by the receiver scores the receiver the point | 2.15.1–2.15.4 |
The flight is integrated in SI units with Runge–Kutta at 600 steps a second, under two forces besides gravity: drag, ½ ρ CD πr² |v| v, and the Magnus force, ½ ρ CL πr² |v|² along ω × v. That second one is why a loop dives onto the table and why a side-spin serve bends away from you.
The coefficients are not tuned by feel. They are read off a surface over the Reynolds number and the spin parameter SP = rω/|v|, built from free-flight measurements of a real 40 mm ball. The surprising part, and the reason a simple CL ∝ SP model is wrong, is that lift is not a rising function of spin: it climbs to about 0.30, then collapses near SP = 0.5–0.7 before rising again. The people who measured it call it the lift crisis. In this game a ball with more topspin can drop less than one with a little less — and that is the measurement, not an effect anyone put in.
Drag never has a crisis here: a rally tops out near Reynolds 1.1e5, and a smooth sphere's drag crisis is at about 3.5×10⁵. The dips in drag you see are caused by the spin, not the speed.
Terminal velocity for this ball comes out at 8.8 m/s, which is why a lobbed ball falls so slowly, and why 2.7 g of plastic behaves nothing like a tennis ball.
A table tennis ball is a hollow shell, so its moment of inertia is ⅔ m r², not the ⅞ m r² of a solid ball. That single fact decides every bounce. The impulse that would bring the contact point to rest is m|u| / ⅝, so a spinless ball keeps 60% of its horizontal speed off the table where a solid ball would keep 71%. Backspin comes off slower and can kick backwards; topspin comes off faster and can actually gain horizontal speed on the bounce, which is measured, not invented.
The vertical restitution is the Laws' own number: a 30 cm drop must rebound about 23 cm [2.1.3], so e = √(23/30) = 0.876 at that impact speed, falling as the ball arrives harder.
From the Laws, by clause: every dimension above, the service laws, the let, the point, the eleven-point game, the service order, the change of ends and the expedite system. From published measurement: the drag and lift coefficients, the restitution and the friction of the bounce, and the hollow-shell inertia. This app's own, and not published anywhere: the racket's size and mass, how the rubber grips, what a net cord does to a ball, how the opponent plays, and every colour on the screen. CREDITS.txt lists all of it, and this game is an independent implementation with no affiliation to the ITTF or to any manufacturer.
The Laws this simulation does not implement, because two physics agents cannot produce them: touching the net assembly or moving the table [2.10.1.9, 2.10.1.10], a free hand on the playing surface [2.10.1.11], a deliberate double hit [2.10.1.7], an illegal racket side [2.10.1.8], and everything about doubles and wheelchair play. Ends do change [2.13.7]; the camera simply follows you round rather than swapping which end you are shown.