G.143 intersecting chords theorem — Code

III.35

If two chords in a circle intersect one another, the rectangle contained by the segments of one equals the rectangle contained by the segments of the other.

g1.py

A B C D E
"""Programmatic construction for Book III, Proposition 35 Case 1 (III.35 - g1)."""

        from __future__ import annotations

        from geometor.model import Model


        def construct_g1() -> Model:
            """Construct the figure 0077.g2 using geometor.model."""
            model = Model("III.35.g1")

            # Center E(86, -76) and points on circle ABCD, radius 61 (y-inverted)
            E = model.set_point(86.0, -76.0, ID="E")
            B = model.set_point(25.0, -76.0, classes=["given"], ID="B")
            D = model.set_point(147.0, -76.0, classes=["given"], ID="D")
            A = model.set_point(39.27, -36.79, classes=["given"], ID="A")
            C = model.set_point(132.73, -115.21, classes=["given"], ID="C")

            # Circle ABCD
            model.construct_circle(E, B)

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

            # Sections
            model.set_section([A, E, C])
            model.set_section([B, E, D])

            return model


        if __name__ == "__main__":
            construct_g1()
        

g2.py

A B C D E F G H
"""Programmatic construction for Book III, Proposition 35 Case 2 (III.35 - g2)."""

        from __future__ import annotations

        from geometor.model import Model


        def construct_g2() -> Model:
            """Construct the figure 0078.g1 using geometor.model."""
            model = Model("III.35.g2")

            # Center F(95, -92) and points on circle ABCD, radius 78 (y-inverted)
            F = model.set_point(95.0, -92.0, ID="F")
            A = model.set_point(24.3, -59.0, classes=["given"], ID="A")
            C = model.set_point(101.0, -169.77, classes=["given"], ID="C")
            B = model.set_point(68.0, -165.18, classes=["given"], ID="B")
            D = model.set_point(165.7, -59.0, classes=["given"], ID="D")
            E = model.set_point(83.42, -144.39, ID="E")
            G = model.set_point(62.65, -114.38, ID="G")
            H = model.set_point(116.85, -112.09, ID="H")

            # Circle ABCD
            model.construct_circle(F, A)

            # Chords AC and BD and their sub-segments
            model.set_segment(A, C)
            model.set_segment(A, G)
            model.set_segment(G, C)
            model.set_segment(A, E)
            model.set_segment(E, C)
            model.set_segment(G, E)

            model.set_segment(B, D)
            model.set_segment(D, H)
            model.set_segment(H, B)
            model.set_segment(D, E)
            model.set_segment(E, B)
            model.set_segment(H, E)

            # Perpendiculars and radii from F
            model.set_segment(F, G)
            model.set_segment(F, H)
            model.set_segment(F, B)
            model.set_segment(F, C)
            model.set_segment(F, E)

            # Sections
            model.set_section([A, G, C])
            model.set_section([A, E, C])
            model.set_section([A, G, E])
            model.set_section([G, E, C])
            model.set_section([D, H, B])
            model.set_section([D, E, B])
            model.set_section([D, H, E])
            model.set_section([H, E, B])

            # Polygons
            model.set_polygon([F, G, E])
            model.set_polygon([F, G, C])
            model.set_polygon([F, H, E])
            model.set_polygon([F, H, B])

            return model


        if __name__ == "__main__":
            construct_g2()