G.193 parts ratio multiples — Code

V.15

Parts have the same ratio as the same multiples of them taken in corresponding order.
A G H B D K L E C F
"""Programmatic construction for Book V, Proposition 15 (V.15)."""

        from __future__ import annotations

        from geometor.model import Model


        def construct_g1() -> Model:
            """Construct the figure 0169.g1 (Book V, Prop. 15 subdivided magnitudes AB, DE and parts C, F)."""
            model = Model("V.15")

            # Subdivided magnitude AB = AG + GH + HB
            A = model.set_point(28.00, -27.00, classes=["given"], ID="A")
            G = model.set_point(83.00, -27.00, ID="G")
            H = model.set_point(137.00, -27.00, ID="H")
            B = model.set_point(192.00, -27.00, classes=["given"], ID="B")
            model.set_segment(A, B)
            model.set_segment(A, G)
            model.set_segment(G, H)
            model.set_segment(H, B)
            model.set_section([A, G, H])
            model.set_section([G, H, B])

            # Subdivided magnitude DE = DK + KL + LE
            D = model.set_point(28.00, -55.00, classes=["given"], ID="D")
            K = model.set_point(73.00, -55.00, ID="K")
            L = model.set_point(117.00, -55.00, ID="L")
            E = model.set_point(162.00, -55.00, classes=["given"], ID="E")
            model.set_segment(D, E)
            model.set_segment(D, K)
            model.set_segment(K, L)
            model.set_segment(L, E)
            model.set_section([D, K, L])
            model.set_section([K, L, E])

            # Single-letter magnitude C
            C1 = model.set_point(262.00, -27.00, classes=["given"], ID="C")
            C2 = model.set_point(317.00, -27.00, classes=["given"], ID="C2")
            model.set_segment(C1, C2)

            # Single-letter magnitude F
            F1 = model.set_point(262.00, -55.00, classes=["given"], ID="F")
            F2 = model.set_point(308.00, -55.00, classes=["given"], ID="F2")
            model.set_segment(F1, F2)

            return model


        if __name__ == "__main__":
            construct_g1()