Each camera never sees the ball's position — only the bearing angle to it, a single ray from a known camera position. This is the 2D, top-down version of the same math automated line-calling systems (Hawk-Eye-style) use: reconstruct the point where several such rays best agree.
With perfect cameras the rays would meet exactly at one point. Real pixels have finite angular resolution, so each bearing carries noise and the rays are skew — they miss each other. The system finds the point p minimising the total squared perpendicular distance to all N rays:
ray i: o_i + t·d_i (d_i = unit bearing vector)
minimise Σ_i |(I − d_i d_iᵀ)(p − o_i)|²
⇒ solve [ Σ_i (I − d_i d_iᵀ) ] p = Σ_i (I − d_i d_iᵀ) o_i
a 2×2 linear system built purely from camera positions and bearings.
The uncertainty ellipse is not decorative — it is the real inverse of the Fisher information matrix. Each ray's angular noise σ (radians) becomes a positional noise of roughly σ·distance perpendicular to that ray, so rays from far or shallow-angle cameras carry less information. Weighting each ray's contribution by 1/(σ·distance)² and summing gives the information matrix M; its inverse M⁻¹ is the covariance, whose eigenvectors/eigenvalues are the ellipse axes:
M = Σ_i w_i (I − d_i d_iᵀ), w_i = 1 / (σ·dist_i)²
Cov = M⁻¹ → ellipse axes = eigenvectors of Cov, scaled by √eigenvalue
- Good spread — cameras around the full perimeter give rays crossing at wide angles; M is well-conditioned and the ellipse is small and round.
- Poor cluster — cameras bunched on one side give nearly-parallel rays; M becomes ill-conditioned and the ellipse stretches badly along the direction the cameras agree least about (usually depth, away from the cluster).
- Run Batch repeats the noisy measurement 200 times at the current geometry and compares the empirical RMS spread of the estimates against the analytic prediction above — real Monte-Carlo verification, not a canned number.
- A ball of radius r counts as IN if (bounce offset − r) ≤ 0, the same rule real line judges use.
Drag the camera icons yourself, then Run Batch on a tight cluster vs. a good spread near a close call (small offset) and watch both the ellipse and the miscall rate grow.