"""Programmatic construction for Book I, I.44 (I.44).
To a given straight line to apply, in a given rectilineal angle, a parallelogram equal to a given triangle.
"""
from __future__ import annotations
from geometor.model import Model
def construct_g1() -> Model:
"""Construct the figure for 0356.g1 (I.44) using geometor.model."""
model = Model("I.44")
# 1. Points
H = model.set_point(225, -20, ID="H")
G = model.set_point(338, -20, ID="G")
F = model.set_point(375, -20, ID="F")
A = model.set_point(204, -96, classes=["given"], ID="A")
B = model.set_point(316, -96, classes=["given"], ID="B")
E = model.set_point(353, -96, ID="E")
L = model.set_point(196, -121, ID="L")
M = model.set_point(308, -121, ID="M")
K = model.set_point(345, -121, ID="K")
C1 = model.set_point(36, -23, classes=["given"], ID="C1")
C2 = model.set_point(10, -97, classes=["given"], ID="C2")
C3 = model.set_point(89, -97, classes=["given"], ID="C3")
D = model.set_point(184, -76, classes=["given"], ID="D")
D1 = model.set_point(176, -23, ID="D1")
D2 = model.set_point(129, -109, ID="D2")
# 3. Segments
model.set_segment(C1, C2)
model.set_segment(C2, C3)
model.set_segment(C3, C1)
model.set_segment(D, D1)
model.set_segment(D, D2)
model.set_segment(H, F)
model.set_segment(H, G)
model.set_segment(F, G)
model.set_segment(A, E)
model.set_segment(A, B)
model.set_segment(B, E)
model.set_segment(L, K)
model.set_segment(L, M)
model.set_segment(M, K)
model.set_segment(H, L)
model.set_segment(A, H)
model.set_segment(A, L)
model.set_segment(G, M)
model.set_segment(B, G)
model.set_segment(B, M)
model.set_segment(F, K)
model.set_segment(E, F)
model.set_segment(E, K)
model.set_segment(H, K)
model.set_segment(H, B)
model.set_segment(B, K)
# 4. Collinear Sections
model.set_section([H, G, F])
model.set_section([A, B, E])
model.set_section([L, M, K])
model.set_section([H, A, L])
model.set_section([G, B, M])
model.set_section([F, E, K])
model.set_section([H, B, K])
# 5. Polygons (Triangles, Parallelograms, Trapezia, Squares)
model.set_polygon([C1, C2, C3])
model.set_polygon([B, E, F, G])
model.set_polygon([A, B, M, L])
model.set_polygon([H, A, B, G])
model.set_polygon([B, M, K, E])
model.set_polygon([H, L, K, F])
# 6. Angles (Wedges)
model.set_wedge(D, D1, D1, D2)
model.set_wedge(B, E, E, G)
model.set_wedge(H, A, A, F)
model.set_wedge(F, H, H, E)
model.set_wedge(H, B, B, G)
model.set_wedge(F, G, G, E)
model.set_wedge(B, A, A, M)
return model
if __name__ == "__main__":
construct_g1()