Library · Geometric Probability · Chapter 25
Wendel’s theorem in the plane
Problem 25.1
Three points are chosen independently and uniformly on a circle. What is the probability that the triangle they form contains the centre of the circle?
Solution. Step 1: geometric reformulation. A triangle inscribed in a circle contains the centre iff the three arcs between consecutive vertices (measured along the circle) are all shorter than a semicircle. Equivalently, the triangle fails to contain iff the three points lie in some semicircle. (The reason: a triangle with vertices on a circle contains the centre iff no diameter separates the points from the centre, which is the same as saying no open semicircle contains all three.)
Step 2: parametrise. By rotational symmetry, condition on being at angle on the unit circle. Let be the angles of measured as a fraction of the full circle (so angle and ); both are independently uniform on .
Given (the event , probability ), the three arcs as fractions of the circle are , , and , summing to . All three are strictly below iff
Step 3: compute the area. In the triangle , the region satisfying the three conditions above is itself a triangle with vertices , , , of area .
Hence . By symmetry (interchanging and ), the unconditional probability is
import numpy as np
# 3 uniform points on circle; triangle contains origin iff the signed areas
# (origin with each edge) all share the sign of the full triangle's signed area.
theta = np.random.rand(3, 10**6) * 2*np.pi
x, y = np.cos(theta), np.sin(theta)
s_tri = (x[1]-x[0])*(y[2]-y[0]) - (x[2]-x[0])*(y[1]-y[0])
s01 = x[0]*y[1] - x[1]*y[0]
s12 = x[1]*y[2] - x[2]*y[1]
s20 = x[2]*y[0] - x[0]*y[2]
contains = (np.sign(s_tri)==np.sign(s01)) & \
(np.sign(s_tri)==np.sign(s12)) & \
(np.sign(s_tri)==np.sign(s20))
print(f"sim: {contains.mean():.5f} exact: 0.25")
# sim: 0.25033 exact: 0.25