G.229 describe on a given segment a rectilinear figure — Code¶
Describe on a given segment a rectilinear figure similar and similarly situated to a given rectilinear figure.
g1.py
"""Programmatic construction for Book VI, Proposition 18 (VI.18 - g1).
Given rectilinear figure CE (quadrilateral CDEF) divided into two triangles
FCD and FDE by diagonal DF.
"""
from __future__ import annotations
from geometor.model import Model
def construct_g1() -> Model:
"""Construct the figure for 0235.g1 (VI.18, given figure CE) using geometor.model."""
model = Model("VI.18.g1")
# 1. Points
C = model.set_point(20.0, -129.0, classes=["given"], ID="C")
D = model.set_point(135.0, -129.0, classes=["given"], ID="D")
E = model.set_point(116.0, -28.0, classes=["given"], ID="E")
F = model.set_point(46.0, -70.0, classes=["given"], ID="F")
# 2. Segments
model.set_segment(C, D)
model.set_segment(D, E)
model.set_segment(E, F)
model.set_segment(F, C)
model.set_segment(D, F)
# 3. Polygons
model.set_polygon([C, D, E, F])
model.set_polygon([F, C, D])
model.set_polygon([F, D, E])
# 4. Angles / Wedges
model.set_wedge(C, F, F, D)
model.set_wedge(D, C, C, F)
model.set_wedge(F, C, C, D)
model.set_wedge(D, F, F, E)
model.set_wedge(F, D, D, E)
model.set_wedge(E, F, F, D)
model.set_wedge(F, C, C, E)
model.set_wedge(D, C, C, E)
return model
if __name__ == "__main__":
construct_g1()
g2.py
"""Programmatic construction for Book VI, Proposition 18 (VI.18 - g2).
Constructed rectilinear figure AH (quadrilateral ABHG) on given straight line AB,
similar and similarly situated to CE (CDEF).
"""
from __future__ import annotations
from geometor.model import Model
def construct_g2() -> Model:
"""Construct the figure for 0235.g2 (VI.18, constructed figure AH) using geometor.model."""
model = Model("VI.18.g2")
# 1. Points
A = model.set_point(21.0, -110.0, classes=["given"], ID="A")
B = model.set_point(113.0, -110.0, classes=["given"], ID="B")
H = model.set_point(98.0, -22.0, classes=["given"], ID="H")
G = model.set_point(40.0, -58.0, classes=["given"], ID="G")
# 2. Segments
model.set_segment(A, B)
model.set_segment(B, H)
model.set_segment(H, G)
model.set_segment(G, A)
model.set_segment(B, G)
# 3. Polygons
model.set_polygon([A, B, H, G])
model.set_polygon([G, A, B])
model.set_polygon([G, B, H])
# 4. Angles / Wedges
model.set_wedge(A, G, G, B)
model.set_wedge(B, A, A, G)
model.set_wedge(G, A, A, B)
model.set_wedge(B, G, G, H)
model.set_wedge(G, B, B, H)
model.set_wedge(H, G, G, B)
model.set_wedge(G, A, A, H)
model.set_wedge(B, A, A, H)
return model
if __name__ == "__main__":
construct_g2()