Book XI · Proposition 28
If a parallelepipedal solid be cut by a plane through the diagonals of the opposite planes, the solid will be bisected by the plane.Heath, 1908
Used by: XI.39
Rests on: C.N.1, C.N.2, C.N.3, C.N.4, C.N.5, Def.10, Def.15, Def.4, Post.5
Depth: 11 steps of argument above the first principles. Parallel postulate: needed.
@proposition("XI.28", THEOREM, sample=samples3.corner_and_arms)
def prop_XI_28(o: Point3, a: Point3, b: Point3, c: Point3) -> Out:
"""A parallelepiped cut by a plane through the diagonals of the opposite
faces is bisected by that plane."""
hypothesis("the three arms are not in one plane", not coplanar(o, a, b, c))
solid = _built(parallelepiped(o, a, b, c, "the solid"))
whole = content(solid)
across = vector_between(o, c)
near, far = solid.vertices[2], solid.vertices[6]
line3(o, near, "the diagonal of the base")
line3(solid.vertices[4], far, "the diagonal of the opposite face")
cutter = plane_through(o, near, far, "the cutting plane")
first = _built(prism((o, a, near), across, "the first prism"))
second = _built(prism((o, near, b), across, "the second prism"))
claim("the plane is carried through the diagonals of the opposite faces",
"XI.3",
on_plane(o, cutter) and on_plane(near, cutter)
and on_plane(solid.vertices[4], cutter) and on_plane(far, cutter))
claim("the two prisms it makes are equal to one another", "I.34",
content(first) == content(second))
claim("so the solid is bisected by the plane", "XI.28",
content(first) + content(second) == whole
and 2 * content(first) == whole)
return Out(prisms=(first, second), plane=cutter)