G.444 square side rational — Code¶
The square on the side of a rational plus a medial area applied to a rational segment produces as breadth the fifth binomial.
"""Programmatic construction for Book X, Proposition 64 (X.64)."""
from __future__ import annotations
from geometor.model import Model
def construct_g1() -> Model:
"""Construct the figure 0146.g1 using geometor.model."""
model = Model("X.64")
# Side of a rational plus a medial area AB divided at C
A = model.set_point(52.0, -131.5, classes=["given"], ID="A")
C = model.set_point(139.0, -131.5, classes=["given"], ID="C")
B = model.set_point(185.0, -131.5, classes=["given"], ID="B")
# Parallelogram DF applied to rational straight line DE, divided by KH, ML, NO
D = model.set_point(23.5, -18.0, classes=["given"], ID="D")
K = model.set_point(101.5, -18.0, ID="K")
M = model.set_point(124.5, -18.0, ID="M")
N = model.set_point(168.5, -18.0, ID="N")
G = model.set_point(212.5, -18.0, ID="G")
E = model.set_point(23.5, -110.5, classes=["given"], ID="E")
H = model.set_point(101.5, -110.5, ID="H")
L = model.set_point(124.5, -110.5, ID="L")
O = model.set_point(168.5, -110.5, ID="O")
F = model.set_point(212.5, -110.5, ID="F")
# Base lines
model.construct_line(A, B)
model.construct_line(D, G)
model.construct_line(E, F)
model.construct_line(D, E)
model.construct_line(K, H)
model.construct_line(M, L)
model.construct_line(N, O)
model.construct_line(G, F)
# Segments on AB
model.set_segment(A, B)
model.set_segment(A, C)
model.set_segment(C, B)
# Segments on DEFG
model.set_segment(D, G)
model.set_segment(D, K)
model.set_segment(D, M)
model.set_segment(D, N)
model.set_segment(K, M)
model.set_segment(K, N)
model.set_segment(K, G)
model.set_segment(M, N)
model.set_segment(M, G)
model.set_segment(N, G)
model.set_segment(E, F)
model.set_segment(E, H)
model.set_segment(E, L)
model.set_segment(E, O)
model.set_segment(H, L)
model.set_segment(H, O)
model.set_segment(H, F)
model.set_segment(L, O)
model.set_segment(L, F)
model.set_segment(O, F)
model.set_segment(D, E)
model.set_segment(K, H)
model.set_segment(M, L)
model.set_segment(N, O)
model.set_segment(G, F)
# Sections
model.set_section([A, C, B])
model.set_section([D, K, M])
model.set_section([D, M, G])
model.set_section([M, N, G])
# Polygons
model.set_polygon([D, E, F, G])
model.set_polygon([D, E, H, K])
model.set_polygon([K, H, L, M])
model.set_polygon([D, E, L, M])
model.set_polygon([M, L, F, G])
model.set_polygon([M, L, O, N])
model.set_polygon([N, O, F, G])
return model
if __name__ == "__main__":
construct_g1()