G.141 construct a circle segment on a chord admitting a given angle — Code

III.33

On a given segment, construct a segment of a circle admitting an angle equal to a given rectilineal angle.

g1.py

C A B D E F G
"""Programmatic construction for Book III, Proposition 33 — Acute Angle Case (III.33 - g1)."""

        from __future__ import annotations

        from geometor.model import Model


        def construct_g1() -> Model:
            """Construct the figure 0073.g1 using geometor.model."""
            model = Model("III.33.g1")

            # Given acute angle at C (y-inverted)
            C = model.set_point(83.0, -103.0, classes=["given"], ID="C")
            C1 = model.set_point(16.0, -103.0, ID="C1")
            C2 = model.set_point(56.0, -63.0, ID="C2")
            model.set_segment(C, C1)
            model.set_segment(C, C2)
            model.set_wedge(C, C1, C1, C2)

            # Circle ABE with center G(207, -104), radius 74
            G = model.set_point(207.0, -104.0, ID="G")
            A = model.set_point(207.0, -30.0, classes=["given"], ID="A")
            E = model.set_point(207.0, -178.0, ID="E")
            B = model.set_point(134.15, -117.0, classes=["given"], ID="B")
            F = model.set_point(170.58, -73.5, ID="F")
            D = model.set_point(138.0, -30.0, ID="D")
            D2 = model.set_point(284.0, -30.0, ID="D2")

            # Construction circle ABE
            model.construct_circle(G, A)

            # Segments
            model.set_segment(D, D2)
            model.set_segment(A, D)
            model.set_segment(A, E)
            model.set_segment(A, G)
            model.set_segment(G, E)
            model.set_segment(A, B)
            model.set_segment(A, F)
            model.set_segment(F, B)
            model.set_segment(F, G)
            model.set_segment(G, B)
            model.set_segment(E, B)

            # Sections
            model.set_section([A, F, B])
            model.set_section([A, G, E])

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

            # Angles
            model.set_wedge(A, D, D, B)
            model.set_wedge(A, D, D, E)
            model.set_wedge(F, A, A, G)
            model.set_wedge(F, B, B, G)
            model.set_wedge(E, A, A, B)

            return model


        if __name__ == "__main__":
            construct_g1()
        

g2.py

C A B D E F
"""Programmatic construction for Book III, Proposition 33 — Right Angle Case (III.33 - g2)."""

        from __future__ import annotations

        from geometor.model import Model


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

            # Given right angle at C (y-inverted)
            C = model.set_point(88.0, -105.0, classes=["given"], ID="C")
            C1 = model.set_point(18.0, -105.0, ID="C1")
            C2 = model.set_point(88.0, -55.0, ID="C2")
            model.set_segment(C, C1)
            model.set_segment(C, C2)
            model.set_wedge(C, C1, C1, C2)

            # Circle AEB with center F(212, -105), radius 75
            F = model.set_point(212.0, -105.0, ID="F")
            A = model.set_point(212.0, -30.0, classes=["given"], ID="A")
            B = model.set_point(212.0, -180.0, classes=["given"], ID="B")
            E = model.set_point(137.54, -114.0, ID="E")
            D = model.set_point(135.0, -30.0, ID="D")
            D2 = model.set_point(295.0, -30.0, ID="D2")

            # Construction circle AEB
            model.construct_circle(F, A)

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

            # Section
            model.set_section([A, F, B])

            # Polygon
            model.set_polygon([A, E, B])

            # Angles
            model.set_wedge(A, D, D, B)
            model.set_wedge(E, A, A, B)

            return model


        if __name__ == "__main__":
            construct_g2()
        

g3.py

C A B D E F G H
"""Programmatic construction for Book III, Proposition 33 — Obtuse Angle Case (III.33 - g3)."""

        from __future__ import annotations

        from geometor.model import Model


        def construct_g3() -> Model:
            """Construct the figure 0075.g1 using geometor.model."""
            model = Model("III.33.g3")

            # Given obtuse angle at C (y-inverted)
            C = model.set_point(55.0, -89.0, classes=["given"], ID="C")
            C1 = model.set_point(155.0, -89.0, ID="C1")
            C2 = model.set_point(12.0, -37.8, ID="C2")
            model.set_segment(C, C1)
            model.set_segment(C, C2)
            model.set_wedge(C, C1, C1, C2)

            # Circle AEBH with center G(263, -91), radius 73
            G = model.set_point(263.0, -91.0, ID="G")
            A = model.set_point(263.0, -18.0, classes=["given"], ID="A")
            E = model.set_point(263.0, -164.0, ID="E")
            B = model.set_point(191.13, -103.8, classes=["given"], ID="B")
            F = model.set_point(227.07, -60.9, ID="F")
            H = model.set_point(211.38, -39.38, ID="H")
            D = model.set_point(340.0, -18.0, ID="D")

            # Construction circle AEB
            model.construct_circle(G, A)

            # Segments
            model.set_segment(A, D)
            model.set_segment(A, E)
            model.set_segment(A, G)
            model.set_segment(G, E)
            model.set_segment(A, B)
            model.set_segment(A, F)
            model.set_segment(F, B)
            model.set_segment(F, G)
            model.set_segment(G, B)
            model.set_segment(A, H)
            model.set_segment(H, B)

            # Sections
            model.set_section([A, F, B])
            model.set_section([A, G, E])

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

            # Angles
            model.set_wedge(A, B, B, D)
            model.set_wedge(A, D, D, E)
            model.set_wedge(F, A, A, G)
            model.set_wedge(F, B, B, G)
            model.set_wedge(H, A, A, B)

            return model


        if __name__ == "__main__":
            construct_g3()