Different materials. The same laws.
Physics-based scenarios, not calibrated specimens. Five balls, four floors and two wall materials give 40 combinations. The player chooses materials; coefficients stay fixed. Every numerical contact value is listed below. Literature reference values are identified explicitly. Numerical verification does not replace experiments.
Geometry and inertia
Ball diameter and mass remain physical. The maze is enlarged in proportion to ball radius, keeping the same route and relative clearances. Thus the 40 mm table-tennis ball fits through passages and can enter holes. The screen fits the whole board; equal apparent ball size does not mean equal physical size. This changes travel distances as well as contact dynamics.
| Ball | Diameter [mm] | Mass [g] | Bulk density [kg/m³] | I / mR² | Board [cm] |
|---|---|---|---|---|---|
| Steel | 15 | 13.9605 | 7900 | 0.4 | 30 × 63.3333 |
| Bouncy rubber | 15 | 1.94386 | 1100 | 0.4 | 30 × 63.3333 |
| Table tennis | 40 | 2.7 | 80.5722 | 0.666667 | 80 × 168.889 |
| Cork | 15 | 0.424115 | 240 | 0.4 | 30 × 63.3333 |
| Billiard | 57.15 | 170 | 1739.41 | 0.4 | 114.3 × 241.3 |
Table-tennis dimensions follow the nominal 40 mm / 2.7 g specification in ITTF T3 (2014) [1]. Its inertia uses an ideal thin shell, I = 2mR²/3. The other balls use homogeneous spheres, I = 2mR²/5. Steel, rubber and cork densities are selected as 7,900, 1,100 and 240 kg/m³. The billiard ball uses the 57.15 mm diameter and approximately 170 g reference size in pooltool [2]. For hollow balls, sand resistance uses mass divided by the whole enclosed volume, not polymer density.
Rolling, sliding and spin
u = v + ω × (−Rn)
Jn = −m(1 + e)un
mt = [1/m + R²/I]−1
aroll = g sin θ / (1 + k)
μs ≥ [k / (1 + k)] tan θ
Static contact friction enforces zero slip when its impulse is sufficient. Otherwise kinetic friction opposes contact-point slip. Ideal acceleration is therefore 5g sin θ/7 for a solid sphere and 3g sin θ/5 for the shell. These factors emerge from angular dynamics, rather than multiplying the driving force by a chosen preset.
The steel–ice scenario uses μs = 0.03 and μk = 0.025. From rest, slipping begins above about 6°. During downhill sliding, acceleration is g(sin θ − μk cos θ), not simply g sin θ. Slip direction can differ from travel direction after a collision or reversal. Spin persists and affects the next wall contact. Ice coefficients are a low-friction scenario, not measured temperature-, load- or speed-dependent ice data. Polished glass is not assumed interchangeable with ice.
Rolling resistance is a torque N[b₀ + b₁R|ωtangent|], with no global velocity damping. Torsional friction opposes spin about the contact normal using an estimated Hertz footprint, or the sand footprint. The effective modulus only estimates that footprint; it is not used to predict restitution. A near-rest velocity tolerance of 20 μm/s allows static rolling resistance to hold the ball on sufficiently shallow slopes. Restitution is suppressed below 0.08 m/s normal impact speed to avoid chatter.
All floor contact parameters
Assumed unless identified below. b₀ and b₁ are rolling-moment parameters, not sliding friction. Listed restitution values are normal values at 1 m/s. Contact moduli and tangential restitution are approximations. Sand adds bed forces to these values.
| Contact pair | μs / μk / μimpact | e at 1 m/s | Tangential e | b₀ [μm] | b₁ [μs] | Effective E* [Pa] |
|---|---|---|---|---|---|---|
| Steel / Hardwood | 0.25 / 0.18 / 0.2 | 0.55 | 0 | 8 | 12 | 1000000000 |
| Steel / Dry sand | 0.55 / 0.4 / 0.4 | 0.05 | 0 | 8 | 12 | 1000000000 |
| Steel / Smooth ice | 0.03 / 0.025 / 0.025 | 0.55 | 0 | 0 | 0 | 1000000000 |
| Steel / Baize | 0.25 / 0.2 / 0.2 | 0.35 | 0 | 126 | 0 | 10000000 |
| Bouncy rubber / Hardwood | 0.85 / 0.65 / 0.7 | 0.85 | 0.45 | 40 | 50 | 5000000 |
| Bouncy rubber / Dry sand | 0.8 / 0.6 / 0.6 | 0.12 | 0 | 40 | 50 | 5000000 |
| Bouncy rubber / Smooth ice | 0.1 / 0.07 / 0.08 | 0.78 | 0.25 | 8 | 10 | 5000000 |
| Bouncy rubber / Baize | 0.85 / 0.65 / 0.65 | 0.65 | 0.2 | 262.5 | 20 | 3000000 |
| Table tennis / Hardwood | 0.25 / 0.2 / 0.2 | 0.85 | 0.1 | 30 | 20 | 10000000 |
| Table tennis / Dry sand | 0.45 / 0.3 / 0.3 | 0.12 | 0 | 30 | 20 | 10000000 |
| Table tennis / Smooth ice | 0.04 / 0.03 / 0.03 | 0.82 | 0.05 | 0 | 0 | 10000000 |
| Table tennis / Baize | 0.3 / 0.2 / 0.2 | 0.65 | 0.1 | 500 | 0 | 5000000 |
| Cork / Hardwood | 0.6 / 0.45 / 0.45 | 0.28 | 0 | 120 | 100 | 2000000 |
| Cork / Dry sand | 0.6 / 0.45 / 0.45 | 0.05 | 0 | 120 | 100 | 2000000 |
| Cork / Smooth ice | 0.08 / 0.06 / 0.06 | 0.25 | 0 | 30 | 30 | 2000000 |
| Cork / Baize | 0.65 / 0.45 / 0.45 | 0.2 | 0 | 315 | 50 | 1000000 |
| Billiard / Hardwood | 0.25 / 0.2 / 0.2 | 0.6 | 0 | 30 | 20 | 1000000000 |
| Billiard / Dry sand | 0.55 / 0.4 / 0.4 | 0.05 | 0 | 30 | 20 | 1000000000 |
| Billiard / Smooth ice | 0.04 / 0.03 / 0.03 | 0.65 | 0 | 0 | 0 | 1000000000 |
| Billiard / Baize | 0.25 / 0.2 / 0.2 | 0.4 | 0 | 400.05 | 0 | 10000000 |
Independent walls
Hardwood walls or passive rubber bumpers can be selected on any floor. Wall restitution belongs to the ball–wall pair: rubber bumpers do not make cork as elastic as steel. Bumpers never inject energy. Hole rims and inner hole walls remain hardwood, so changing bumpers does not silently alter hole capture.
| Contact pair | μs / μk / μimpact | e at 1 m/s | Tangential e | b₀ [μm] | b₁ [μs] | Effective E* [Pa] |
|---|---|---|---|---|---|---|
| Steel / Hardwood | 0.25 / 0.18 / 0.2 | 0.55 | 0 | 8 | 12 | 1000000000 |
| Steel / Rubber bumpers | 0.7 / 0.55 / 0.55 | 0.88 | 0.15 | 8 | 12 | 3000000 |
| Bouncy rubber / Hardwood | 0.85 / 0.65 / 0.7 | 0.85 | 0.45 | 40 | 50 | 5000000 |
| Bouncy rubber / Rubber bumpers | 0.9 / 0.75 / 0.75 | 0.88 | 0.4 | 40 | 50 | 3000000 |
| Table tennis / Hardwood | 0.25 / 0.2 / 0.2 | 0.85 | 0.1 | 30 | 20 | 10000000 |
| Table tennis / Rubber bumpers | 0.6 / 0.45 / 0.45 | 0.9 | 0.2 | 30 | 20 | 3000000 |
| Cork / Hardwood | 0.6 / 0.45 / 0.45 | 0.28 | 0 | 120 | 100 | 2000000 |
| Cork / Rubber bumpers | 0.7 / 0.5 / 0.5 | 0.35 | 0 | 120 | 100 | 3000000 |
| Billiard / Hardwood | 0.25 / 0.2 / 0.2 | 0.6 | 0 | 30 | 20 | 1000000000 |
| Billiard / Rubber bumpers | 0.14 / 0.14 / 0.14 | 0.98 (constant) | 0 | 30 | 20 | 3000000 |
Wall contacts use friction-limited normal and tangential impulses, retaining angular momentum and permitting wall-induced hops. For the general pairs, e(v) = [1 + (1/eref − 1)(v / 1 m s−1)1/5]−1. The exponent is motivated by viscoelastic sphere theory [6]; this interpolation is not an empirical constitutive law for all listed materials. The billiard–bumper profile instead keeps e = 0.98 constant.
What the billiards reference establishes
For billiard–baize, sliding friction 0.20 and rolling deceleration 0.01g reproduce published pooltool defaults [2]. The rolling convention matters: this torque solver uses b₀ = (1 + k)R × 0.01 to obtain a = −0.01g on a horizontal plane. Directly substituting b₀/R = 0.01 would understate the loss by the factor 1 + k. Static friction 0.25, vertical baize restitution and contact modulus remain assumptions.
The billiard–rubber impact values e = 0.98 and μ = 0.14 come from Mathavan et al. [3], whose comparison supports their rigid-cushion treatment below roughly 2.5 m/s normal speed. Their cushion geometry and impact formulation differ from this maze’s vertical box faces. Borrowing two coefficients does not validate our rebound trajectories or establish measured accuracy. They are a traceable reference scenario. Billiard balls can still slide after impacts or sufficiently strong changes of force; “always rolling” is not imposed.
Air resistance
ρair = 1.225 kg/m³ CD = 0.47
Quadratic drag acts on every ball, in flight and while supported. Its velocity-only substep uses the exact decaying solution, preventing numerical reversal. CD is a fixed sphere approximation; Reynolds-number dependence, near-floor aerodynamic changes, Magnus lift and aerodynamic spin loss are omitted. Table tennis is the most affected of these profiles because of its area-to-mass ratio.
Ignoring rolling loss, this model gives a table-tennis terminal downhill speed around 3.6 m/s at 10° tilt, which may not be reached in this maze. Drag is not exaggerated to create an arcade speed cap. The 2014 ITTF rebound test uses a steel block [1]; its approximately 0.9 restitution must not be treated as a universal ball value. The wood value 0.85 here remains an estimate.
Sand: an effective deformable bed
Fplough = 0.18Nδ/R
Mbed = 0.12Nδ
Finertial = 1.5ρbedA(δ)|v|²
Bed density is 1,600 kg/m³; A(δ) is the buried circular-segment area. Penetration scaling is extrapolated from solid spheres on a 50 mm glass-bead bed [4]. Transferring it to a 5 mm sand bed, a hollow shell or deformable cork is unvalidated. The new quasi-static curvature/load extension substitutes effective density ρballN/(mg); this is an explicit unvalidated modeling assumption, not a result of that experiment. Sinkage changes immediately with load, with no granular relaxation or hysteresis. Force prefactors are provisional. The bed depth stays 5 mm even when the board grows.
| Ball | Predicted sinkage at N = mg [mm] |
|---|---|
| Steel | 5 |
| Bouncy rubber | 2.6048 |
| Table tennis | 0.977995 |
| Cork | 0.831548 |
| Billiard | 5 |
These are model predictions, not observations. Sinkage modifies resistance without moving the support plane. No individual grains, compaction history, grooves, avalanching or grains entering holes are simulated. Low-density balls penetrate less; that alone does not guarantee weak deceleration, because their mass is also lower.
Smooth terrain, curvature and launch
Four fixed, compact C² primitives author the rise, dip, rounded lip and goal dome: h = A[1 − ((x − x₀)/a)² − ((y − y₀)/b)²]³ inside the elliptical footprint, zero outside. A grid with spacing at most 2.5 mm on the base board precomputes bicubic Hermite coefficients. Height, gradient and Hessian all come from this same interpolated potential. Shared first derivatives give C¹ joins; curvature has small cell-boundary differences. Apertures and the outer perimeter stay flat.
| Feature | Centre x / y [cm] | Half widths x / y [cm] | Base height [mm] |
|---|---|---|---|
| RISE | 14.5 / 12.7 | 4.5 / 2.6 | 2 |
| DIP | 14.7 / 21.3 | 4.7 / 4 | -3.6 |
| LIP | 20.9 / 42.4 | 2.5 / 2.5 | 2.1 |
| HOLD 3s | 26 / 58.5 | 3 / 3 | 0.05 |
Slopes stay below 15°. Obstacles scale geometrically with the board. The dome instead keeps a three-metre physical curvature radius, so its height scales with board size squared. These are designed terrain dimensions, not measurements of a toy. The 28° input limit exceeds every static terrain slope: momentum helps, but the hills are not an absolute energy barrier at maximum tilt. The rounded lip is a smooth bump, not a discontinuous ledge.
atangent,roll ≈ gtangent / (1 + k)
N = m max[0, −g·n − v·dn/dt]
vmin = √[2gΔh / (1 + k)] (level board, no loss)
The engine projects the existing virtual-gravity vector through three-dimensional contact; it does not apply an extra 5/7 multiplier. Its tilt sign convention accelerates toward positive input, giving a ≈ g(t − ∇h)/(1 + k) for small slopes. Inclination, ice slip, rolling torque, torsional friction and sand drag all use the local normal and tangent. The closest contact point is solved for the finite sphere. Curvature is taken along actual travel, with the ball-centre offset included: a circular crest uses radius Rc + r, a dip Rc − r [10].
The normal-load estimate drives rolling and granular losses; unilateral contact impulses supply the reaction and friction. Curvature is not applied a second time as an extra force. A separating ball is never pulled back onto the surface. It follows ballistic motion under virtual gravity and air drag, then receives normal restitution and friction on landing. This changes spin and allows subsequent re-grip. Static curvature does not disappear when the player tilts.
The goal and open edges
The whole ball must remain inside the goal ring, grounded, with speed below 0.08 m/s for three simulated seconds. Leaving the ring or hopping resets the dwell. Pauses do not advance it. An illuminated arc shows progress. The ideal central e-folding time is √[(1 + k)(Rc + r)/g]: about 0.66 s for steel and 0.72 s for the shell. This is a lossless linear reference, not a guaranteed response time with rolling resistance. Cork and sand may settle inside their static resistance deadbands; no hidden goal force cancels their material properties.
For this steel–wood profile, the static near-rest slope threshold is approximately b₀/r = 0.00107 rad, or 0.061°, rather than a universal 0.3°. Reaching the dome therefore does not imply that every point is dynamically unstable for every material.
Open edges is off by default. Enabling it removes the four outer walls while retaining the inner maze walls and their selected material. The floor ends at the board rectangle; geometric sphere–edge contact can tip the ball out. A ball that clears the screen perimeter by its radius or falls below the edge is counted as lost and restarts after 800 ms. This is a game boundary condition, not an infinite off-board simulation.
Scenery and numerical limits
Wood grain, sand speckle, ice streaks and matte baize identify the selected floor. Surroundings and frame colours follow the surface. Rubber walls have a separate bumper appearance; steel, blue rubber, white table tennis, cork and a spotted ivory billiard ball have distinct finishes. Tracking marks rotate with simulated spin. These textures exert no random forces. Grooves and ice skid marks accumulate in a separate visual layer; they do not alter friction or deform the physical support surface.
The portrait 30 × 63.3 cm maze has 18 mm internal walls, 40 mm outer walls and 32 mm holes. These dimensions all scale with ball radius. This is a maze using a billiard ball, not a regulation billiards table. Sphere–box contacts include finite wall height. Hole capture follows free fall and rim contact; a centre more than one radius below the opening is counted as captured.
Phone input remains relative β/γ with screen remapping. Virtual tilt changes gravity direction while preserving |g| = 9.81 m/s², up to 28°. Shaking and the non-inertial forces of a physically rotating board are omitted. The clock uses 240 ticks/s, internal steps no longer than 1/960 s and displacement bounded by R/5. Long frame contributions are capped at 50 ms; hiding the page pauses. Sensor filtering remains 15 ms.
Portrait display and feedback
The maze is authored in 9 × 19 board units, separate from physical metres and screen pixels. One uniform scale fits the available rectangle; circles stay circular in portrait and landscape. Canvas backing density is capped at 2. Safe-area insets and visualViewport resize events accommodate display cut-outs, the home indicator and moving browser toolbars.
On iPhone, Add to Home Screen is the recommended launch path. The manifest requests standalone display and supplies icons. On iOS 26, keep “Open as Web App” enabled [7]. This private site can still require a sign-in and an internet connection. No offline service-worker cache is installed. On Android, Enable tilt also requests fullscreen from the same tap, then requests portrait lock if available. Failure leaves ordinary browser play usable.
Status and setup chips hide during play; Pause stays available. Touch play retains the pad. Cached surface/wall/hole images are regenerated only after a size, material or edge-mode change. Persistent marks survive resizing and automatic retries, and clear on Restart or material changes. Each frame composites those layers with fixed-light relief shading, a height-separated shadow and the ball. Terrain normals and faint isoheight contours are cached with the base image. For visibility, normal slopes are exaggerated fivefold on obstacles and by 180 divided by board scale at the dome; these rendering gains exert no force. A small level indicator follows filtered tilt, replacing the former moving shading gradient. Shadows use height above the reference plane, with airborne separation controlling softness/opacity. Quaternion marks and the shell seam reveal spin; a small perspective scale change reveals hops. All 20 ball–floor palettes have either an outline or a highlight contrast cue of at least 3:1 at the base palette endpoints. This is a numerical palette check, not a photographed-phone or full-pixel contrast audit.
Web Audio is created/resumed only through visible control taps or keyboard play. Rolling uses band-passed noise driven by speed; ice is quiet without contact slip. Material-specific bursts use normal contact impulse, a 55 ms minimum interval, at most six impact voices, and ±3% frequency variation. Rim hits and floor landings use the same contact notifications. Capture uses a descending oscillator. Scheduling uses AudioContext.currentTime, not JavaScript timers. Resonances and loudness are sound design, not measured acoustic calibration.
Sound defaults on, with a mute option. Ambient audio is requested where supported [8]; no silent-switch workaround is used. Pausing stops active effects; hiding the page also suspends the audio context. Wall haptics are opt-in, limited to one short pulse per 100 ms, and disabled when navigator.vibrate is absent [9]. Feature detection does not guarantee that a device will emit sound or vibration.
Verification and next measurements
79 automated checks pass, including heightfield derivative consistency and seam continuity, the slope bound, curved-contact load, lossless climbing energy, dip frequency, crest release and landing, three-second goal dwell, and four-sided edge drops. Existing checks cover viewport aspect and DPR bounds, cached rendering execution for all material combinations, audio timing/lifecycle, palette contrast cues, all 40 material-combination routes, passive spinning impacts, 5/7 and 3/5 acceleration, the ice slipping threshold, quadratic drag decay, reference baize coast-down, high-speed walls and hole capture. Routes use a conservative automated controller with terrain-gradient compensation; success establishes traversability, not equal human difficulty. The renderer and audio scheduler were exercised with instrumented API test doubles; those checks do not establish visual appearance, audible quality or real-device permission behaviour. Real-phone, visual browser, listening and physical-specimen validation remain outstanding.
Next measurements: mass and diameter; coast-down at multiple speeds; independent sliding tests; normal and oblique rebounds with tracked spin. Specify wood finish, cork density and rubber compound. For ice specify temperature and surface state; for cloth specify weave and tension; for sand specify grains, depth, packing and moisture. Keep separate trajectories for validation after fitting.
The optional oil film is deferred. A linear drag coefficient needs a defined viscosity, film thickness and contact/flow model; assigning arbitrary damping would not make it a calibrated thin-film simulation.
Download the complete SI parameter ledger (JSON)
Sources and provenance
- ITTF Technical Leaflet T3 (2014), nominal ball geometry/mass and the steel-block bounce test. Historical primary specification, not a claim about every current ball formulation.
- Pooltool v0.3.3 BallParams documentation, explicit reference model defaults. This is software provenance, not our experimental dataset.
- S. Mathavan, M. R. Jackson and R. M. Parkin, A theoretical analysis of billiard ball dynamics under cushion impacts (2010), representative cushion coefficients and model limits.
- Energy dissipation of a sphere rolling up a granular slope: Slip and deformation of the granular surface, Physical Review E 109, 014903 (2024), penetration scaling. Application to this sand layer remains extrapolation.
- R. Cross, Impact behavior of a superball (2015); Coulomb’s law for rolling friction (2016). Contact mechanisms and parameter dependence, not numerical values for our specimens.
- R. Ramírez et al., Coefficient of restitution of colliding viscoelastic spheres (1999). Motivation for speed dependence, not a fitted universal law.
- WebKit features in Safari 26.0, Home Screen launch behaviour.
- AudioSession.type and AudioContext.resume, optional ambient audio and activation.
- Navigator.vibrate, VisualViewport, and requestFullscreen, browser capability boundaries.
- University of Illinois Dynamics Reference: rolling motion, curved surfaces and finite-radius kinematics. Feynman Lectures: two rolling balls solution, inertia-dependent rolling acceleration.