G.245 triangles sides proportional — Code

VI.32

If two triangles having two sides proportional to two sides be placed together at one angle so that their corresponding sides are also parallel, the remaining sides of the triangles is in a segment.
A B C D E
"""Programmatic construction for Book VI, Proposition 32 (VI.32).

        If two triangles ABC, DCE having two sides proportional to two sides be placed
        together at one angle C so that their corresponding sides are also parallel,
        the remaining sides BC, CE will be in a straight line.
        """

        from __future__ import annotations

        from geometor.model import Model


        def construct_g1() -> Model:
            """Construct the figure for 0277.g1 (VI.32) using geometor.model."""
            model = Model("VI.32")

            # 1. Points
            A = model.set_point(105.0, -90.0, classes=["given"], ID="A")
            B = model.set_point(21.0, -154.0, classes=["given"], ID="B")
            C = model.set_point(91.0, -154.0, classes=["given"], ID="C")
            D = model.set_point(255.0, -25.0, classes=["given"], ID="D")
            E = model.set_point(228.0, -154.0, classes=["given"], ID="E")

            # 2. Construction Line along BCE
            model.construct_line(B, E)

            # 3. Segments
            model.set_segment(A, B)
            model.set_segment(A, C)
            model.set_segment(B, C)
            model.set_segment(C, D)
            model.set_segment(D, E)
            model.set_segment(C, E)
            model.set_segment(B, E)

            # 4. Collinear Section
            model.set_section([B, C, E])

            # 5. Polygons (Triangles ABC and DCE)
            model.set_polygon([A, B, C])
            model.set_polygon([D, C, E])

            # 6. Angles (Wedges)
            model.set_wedge(A, C, C, B)  # < B A C )
            model.set_wedge(C, A, A, D)  # < A C D )
            model.set_wedge(D, E, E, C)  # < C D E )
            model.set_wedge(B, A, A, C)  # < A B C )
            model.set_wedge(C, D, D, E)  # < D C E )
            model.set_wedge(C, A, A, E)  # < A C E )
            model.set_wedge(C, B, B, A)  # < A C B )

            return model


        if __name__ == "__main__":
            construct_g1()