G.229 describe on a given segment a rectilinear figure — Code

VI.18

Describe on a given segment a rectilinear figure similar and similarly situated to a given rectilinear figure.

g1.py

C D E F
"""Programmatic construction for Book VI, Proposition 18 (VI.18 - g1).

        Given rectilinear figure CE (quadrilateral CDEF) divided into two triangles
        FCD and FDE by diagonal DF.
        """

        from __future__ import annotations

        from geometor.model import Model


        def construct_g1() -> Model:
            """Construct the figure for 0235.g1 (VI.18, given figure CE) using geometor.model."""
            model = Model("VI.18.g1")

            # 1. Points
            C = model.set_point(20.0, -129.0, classes=["given"], ID="C")
            D = model.set_point(135.0, -129.0, classes=["given"], ID="D")
            E = model.set_point(116.0, -28.0, classes=["given"], ID="E")
            F = model.set_point(46.0, -70.0, classes=["given"], ID="F")

            # 2. Segments
            model.set_segment(C, D)
            model.set_segment(D, E)
            model.set_segment(E, F)
            model.set_segment(F, C)
            model.set_segment(D, F)

            # 3. Polygons
            model.set_polygon([C, D, E, F])
            model.set_polygon([F, C, D])
            model.set_polygon([F, D, E])

            # 4. Angles / Wedges
            model.set_wedge(C, F, F, D)
            model.set_wedge(D, C, C, F)
            model.set_wedge(F, C, C, D)
            model.set_wedge(D, F, F, E)
            model.set_wedge(F, D, D, E)
            model.set_wedge(E, F, F, D)
            model.set_wedge(F, C, C, E)
            model.set_wedge(D, C, C, E)

            return model


        if __name__ == "__main__":
            construct_g1()
        

g2.py

A B H G
"""Programmatic construction for Book VI, Proposition 18 (VI.18 - g2).

        Constructed rectilinear figure AH (quadrilateral ABHG) on given straight line AB,
        similar and similarly situated to CE (CDEF).
        """

        from __future__ import annotations

        from geometor.model import Model


        def construct_g2() -> Model:
            """Construct the figure for 0235.g2 (VI.18, constructed figure AH) using geometor.model."""
            model = Model("VI.18.g2")

            # 1. Points
            A = model.set_point(21.0, -110.0, classes=["given"], ID="A")
            B = model.set_point(113.0, -110.0, classes=["given"], ID="B")
            H = model.set_point(98.0, -22.0, classes=["given"], ID="H")
            G = model.set_point(40.0, -58.0, classes=["given"], ID="G")

            # 2. Segments
            model.set_segment(A, B)
            model.set_segment(B, H)
            model.set_segment(H, G)
            model.set_segment(G, A)
            model.set_segment(B, G)

            # 3. Polygons
            model.set_polygon([A, B, H, G])
            model.set_polygon([G, A, B])
            model.set_polygon([G, B, H])

            # 4. Angles / Wedges
            model.set_wedge(A, G, G, B)
            model.set_wedge(B, A, A, G)
            model.set_wedge(G, A, A, B)
            model.set_wedge(B, G, G, H)
            model.set_wedge(G, B, B, H)
            model.set_wedge(H, G, G, B)
            model.set_wedge(G, A, A, H)
            model.set_wedge(B, A, A, H)

            return model


        if __name__ == "__main__":
            construct_g2()