Book XII · Proposition 16
Given two circles about the same centre, to inscribe in the greater circle an equilateral polygon with an even number of sides which does not touch the lesser circle.Heath, 1908
Needs: IV.6
Used by: XII.17
Rests on: C.N.1, C.N.3, C.N.4, C.N.5, Def.10, Def.15, Def.17, Def.4, Post.5
Depth: 15 steps of argument above the first principles. Parallel postulate: needed.
Nothing. It draws no intersections and reads nothing off the picture.
@proposition("XII.16", CONSTRUCTION, sample=samples3.two_radii)
def prop_XII_16(o: Point3, a: Point3, b: Point3) -> Out:
"""In the greater of two circles about one centre, inscribe an equilateral
polygon with an even number of sides that does not touch the lesser."""
hypothesis("the two circles are about one centre, and one is the greater",
sign(len2(o, a) - len2(o, b)) > 0)
hypothesis("the lesser circle has a positive radius", o != b)
hypothesis("the two radii describe the plane the circles are in",
not collinear3(o, a, b))
greater, lesser = length3(o, a), length3(o, b)
normal = _axis_of((o, a, b))
line3(o, a, "the radius of the greater circle")
line3(o, b, "the radius of the lesser")
# Bisecting again and again carries the side of the figure past the lesser
# circle: the perpendicular from the centre to a side is the radius times
# the cosine of half the angle, and that rises to the radius.
stage = 2
while stage < 12 and sign(greater * turn(stage + 1)[0] - lesser) <= 0:
stage += 1
corners = _ring(regular_polygon(o, greater, normal, stage),
"the polygon inscribed")
apothem = greater * turn(stage + 1)[0]
claim("the polygon has an even number of sides", "XII.16",
len(corners) % 2 == 0 and len(corners) >= 4)
claim("it is equilateral, and inscribed in the greater circle", "IV.6",
len({len2(corners[i], corners[(i + 1) % len(corners)])
for i in range(len(corners))}) == 1
and all(len2(o, corner) == len2(o, a) for corner in corners))
claim("and no side of it touches the lesser circle", "XII.16",
sign(apothem - lesser) > 0)
return Out(polygon=corners, stage=stage)