G.186 unequal magnitudes greater — Code¶
Of unequal magnitudes, the greater has to the same a greater ratio than the less has; and the same has to the less a greater ratio than it has to the greater.
g1.py
"""Programmatic construction for Book V, Proposition 8 Case 1 (V.8 - g1)."""
from __future__ import annotations
from geometor.model import Model
def construct_g1() -> Model:
"""Construct the figure 0156.g1 for Book V, Proposition 8 (Case 1) using geometor.model."""
model = Model("V.8.g1")
# Magnitude AB subdivided at E
A = model.set_point(28.0, -28.0, classes=["given"], ID="A")
E = model.set_point(67.0, -28.0, ID="E")
B = model.set_point(145.0, -28.0, classes=["given"], ID="B")
# Standalone magnitude C
C_1 = model.set_point(28.0, -52.0, classes=["given"], ID="C_1")
C_2 = model.set_point(106.0, -52.0, classes=["given"], ID="C_2")
# Magnitude FH subdivided at G (with intermediate multiple marks F_1, G_1)
F = model.set_point(28.0, -76.0, ID="F")
F_1 = model.set_point(69.0, -76.0, ID="F_1")
G = model.set_point(109.0, -76.0, ID="G")
G_1 = model.set_point(188.0, -76.0, ID="G_1")
H = model.set_point(267.0, -76.0, ID="H")
# Standalone magnitudes K, D, L, M, N
K_1 = model.set_point(28.0, -100.0, ID="K_1")
K_2 = model.set_point(186.0, -100.0, ID="K_2")
D_1 = model.set_point(28.0, -127.0, classes=["given"], ID="D_1")
D_2 = model.set_point(75.0, -127.0, classes=["given"], ID="D_2")
L_1 = model.set_point(28.0, -153.0, ID="L_1")
L_2 = model.set_point(122.0, -153.0, ID="L_2")
M_1 = model.set_point(28.0, -176.0, ID="M_1")
M_2 = model.set_point(170.0, -176.0, ID="M_2")
N_1 = model.set_point(28.0, -200.0, ID="N_1")
N_2 = model.set_point(218.0, -200.0, ID="N_2")
# Base lines
model.construct_line(A, B)
model.construct_line(F, H)
# Segments along AB
model.set_segment(A, B)
model.set_segment(A, E)
model.set_segment(E, B)
# Segments along FH
model.set_segment(F, H)
model.set_segment(F, G)
model.set_segment(G, H)
# Standalone magnitudes C, K, D, L, M, N
model.set_segment(C_1, C_2)
model.set_segment(K_1, K_2)
model.set_segment(D_1, D_2)
model.set_segment(L_1, L_2)
model.set_segment(M_1, M_2)
model.set_segment(N_1, N_2)
return model
if __name__ == "__main__":
construct_g1()
g2.py
"""Programmatic construction for Book V, Proposition 8 Case 2 (V.8 - g2)."""
from __future__ import annotations
from geometor.model import Model
def construct_g2() -> Model:
"""Construct the figure 0157.g1 for Book V, Proposition 8 (Case 2) using geometor.model."""
model = Model("V.8.g2")
# Magnitude AB subdivided at E
A = model.set_point(28.0, -27.0, classes=["given"], ID="A")
E = model.set_point(109.0, -27.0, ID="E")
B = model.set_point(148.0, -27.0, classes=["given"], ID="B")
# Standalone magnitude C
C_1 = model.set_point(28.0, -52.0, classes=["given"], ID="C_1")
C_2 = model.set_point(69.0, -52.0, classes=["given"], ID="C_2")
# Magnitude FH subdivided at G (with intermediate multiple marks F_1, G_1)
F = model.set_point(28.0, -75.0, ID="F")
F_1 = model.set_point(109.0, -75.0, ID="F_1")
G = model.set_point(192.0, -75.0, ID="G")
G_1 = model.set_point(233.0, -75.0, ID="G_1")
H = model.set_point(274.0, -75.0, ID="H")
# Standalone magnitudes K, D, L, M, N
K_1 = model.set_point(28.0, -99.0, ID="K_1")
K_2 = model.set_point(110.0, -99.0, ID="K_2")
D_1 = model.set_point(28.0, -122.0, classes=["given"], ID="D_1")
D_2 = model.set_point(79.0, -122.0, classes=["given"], ID="D_2")
L_1 = model.set_point(28.0, -149.0, ID="L_1")
L_2 = model.set_point(128.0, -149.0, ID="L_2")
M_1 = model.set_point(28.0, -174.0, ID="M_1")
M_2 = model.set_point(180.0, -174.0, ID="M_2")
N_1 = model.set_point(28.0, -198.0, ID="N_1")
N_2 = model.set_point(228.0, -198.0, ID="N_2")
# Base lines
model.construct_line(A, B)
model.construct_line(F, H)
# Segments along AB
model.set_segment(A, B)
model.set_segment(A, E)
model.set_segment(E, B)
# Segments along FH
model.set_segment(F, H)
model.set_segment(F, G)
model.set_segment(G, H)
# Standalone magnitudes C, K, D, L, M, N
model.set_segment(C_1, C_2)
model.set_segment(K_1, K_2)
model.set_segment(D_1, D_2)
model.set_segment(L_1, L_2)
model.set_segment(M_1, M_2)
model.set_segment(N_1, N_2)
return model
if __name__ == "__main__":
construct_g2()