G.565 cones cylinders height — Code¶
:term:`Cones <G.561>` and :term:`cylinders <G.562>` which are of the same :term:`height <G.209>` are to one another as their bases.
"""Programmatic construction for Book XII, Proposition 11 (XII.11)."""
from __future__ import annotations
from geometor.model import Model
def construct_g1() -> Model:
"""Construct the figure 0410.g1 using geometor.model."""
model = Model("XII.11")
# First circle ABCD and axis KL
K = model.set_point(122.0, -120.0, ID="K")
L = model.set_point(214.0, -58.0, ID="L")
A = model.set_point(30.0, -120.0, classes=["given"], ID="A")
B = model.set_point(122.0, -212.0, classes=["given"], ID="B")
C = model.set_point(214.0, -120.0, classes=["given"], ID="C")
D = model.set_point(122.0, -28.0, classes=["given"], ID="D")
T = model.set_point(56.95, -54.95, ID="T")
U = model.set_point(56.95, -185.05, ID="U")
V = model.set_point(187.05, -185.05, ID="V")
W = model.set_point(187.05, -54.95, ID="W")
model.construct_circle(K, A)
model.set_segment(A, C)
model.set_segment(K, L)
for p1, p2 in [(A, B), (B, C), (C, D), (D, A)]:
model.set_segment(p1, p2)
for p1, p2 in [(D, T), (T, A), (A, U), (U, B), (B, V), (V, C), (C, W), (W, D)]:
model.set_segment(p1, p2)
model.set_polygon([A, B, C, D])
model.set_polygon([D, T, A, U, B, V, C, W])
# Second circle EFGH and axis MN
M = model.set_point(336.0, -128.0, ID="M")
N = model.set_point(426.0, -68.0, ID="N")
E = model.set_point(258.0, -128.0, classes=["given"], ID="E")
F = model.set_point(336.0, -206.0, classes=["given"], ID="F")
G = model.set_point(414.0, -128.0, classes=["given"], ID="G")
H = model.set_point(336.0, -50.0, classes=["given"], ID="H")
P = model.set_point(280.85, -72.85, ID="P")
Q = model.set_point(280.85, -183.15, ID="Q")
R = model.set_point(391.15, -183.15, ID="R")
S = model.set_point(391.15, -72.85, ID="S")
model.construct_circle(M, E)
model.set_segment(E, G)
model.set_segment(M, N)
for p1, p2 in [(E, F), (F, G), (G, H), (H, E)]:
model.set_segment(p1, p2)
for p1, p2 in [(H, P), (P, E), (E, Q), (Q, F), (F, R), (R, G), (G, S), (S, H)]:
model.set_segment(p1, p2)
model.set_polygon([E, F, G, H])
model.set_polygon([H, P, E, Q, F, R, G, S])
model.set_polygon([H, P, E])
model.set_polygon([E, Q, F])
model.set_polygon([F, R, G])
model.set_polygon([G, S, H])
return model
if __name__ == "__main__":
construct_g1()