G.141 construct a circle segment on a chord admitting a given angle — Code¶
On a given segment, construct a segment of a circle admitting an angle equal to a given rectilineal angle.
g1.py
"""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
"""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
"""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()