Book XII · Proposition 8
Similar pyramids which have triangular bases are in the triplicate ratio of their corresponding sides.Heath, 1908
Needs: XI.33
Rests on: VI.Def.1, XI.Def.11, XI.Def.9
Depth: 4 steps of argument above the first principles. Parallel postulate: not needed.
Nothing. It draws no intersections and reads nothing off the picture.
@proposition("XII.8", THEOREM, sample=samples3.polygon_base)
def prop_XII_8(a: Point3, b: Point3, c: Point3, d: Point3) -> Out:
"""Similar pyramids on triangular bases are in the triplicate ratio of
their corresponding sides."""
hypothesis("the four points are not in one plane", not coplanar(a, b, c, d))
first = _drawn(pyramid((a, b, c), d, "the first pyramid"))
scale = Fraction(3, 2)
carried = tuple(posit3(Point3(a.x + scale * (point.x - a.x),
a.y + scale * (point.y - a.y),
a.z + scale * (point.z - a.z)), name)
for point, name in ((b, "P"), (c, "Q"), (d, "R")))
second = _drawn(pyramid((a, carried[0], carried[1]), carried[2],
"the similar pyramid"))
because(prop_XI_33, a, b, c, d)
side, answering = length3(a, b), length3(a, carried[0])
claim("the pyramids are similar, their edges in one ratio", "XI.Def.9",
all(len2(a, far) == scale * scale * len2(a, near)
for near, far in zip((b, c, d), carried)))
claim("as the pyramid is to the pyramid, so is the cube on the side to the "
"cube on the answering side", "XII.8",
content(first) * answering * answering * answering
== content(second) * side * side * side)
return Out(pyramids=(first, second), sides=(side, answering))