G.143 intersecting chords theorem — Code¶
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
"""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
"""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()