GC-01.05 · Symbolic Model & Source¶
Companion symbolic Python construction for GC-01.05 · Mascheroni Five-Circle Compass-Only Construction (GC-01.05).
Programmatic Usage¶
from geometor.divine.catalog import build_construction
model, cert = build_construction("GC-01.05")
assert cert.ratio_expr == sp.GoldenRatio
Exact Builder Implementation¶
def build_hofstetter_compass_only() -> ConstructionResult:
"""Kurt Hofstetter's 2002 Mascheroni 5-circle compass-only construction."""
m = new_catalog_model("hofstetter-compass-only")
A = m.set_point(0, 0, classes=["given"], ID="A")
B = m.set_point(1, 0, classes=["given"], ID="B")
# Strictly 5 circles and 0 lines
c1 = m.construct_circle(A, B, classes=["compass"], ID="c1")
c2 = m.construct_circle(B, A, classes=["compass"], ID="c2")
C = m.intersect(c1, c2, side_of=(A, B, 1), ID="C")
D = m.intersect(c1, c2, side_of=(A, B, -1), ID="D")
c3 = m.construct_circle(C, D, classes=["compass"], ID="c3")
E = m.intersect(c3, c1, other_than=D, ID="E")
F = m.intersect(c3, c2, other_than=D, ID="F")
c4 = m.construct_circle(B, E, classes=["golden"], ID="c4")
c5 = m.construct_circle(A, F, classes=["golden"], ID="c5")
m.intersect(c4, c5, side_of=(A, B, -1), classes=["golden"], ID="X")
Y = m.intersect(c4, c5, side_of=(A, B, 1), classes=["golden"], ID="Y")
_ = Y
return make_result(m, ("C", "D"), ("D", "X"), ("C", "D", "X"))
Exact Symbolic Point Coordinates¶
All points in hofstetter-compass-only are certified free of floating-point approximations over \(\mathbb{Q}(\sqrt{3}, \phi)\):
Point |
Exact \(x\) |
Exact \(y\) |
|---|---|---|
|
\(0\) |
\(0\) |
|
\(1\) |
\(0\) |
|
\(\frac{1}{2}\) |
\(\frac{\sqrt{3}}{2}\) |
|
\(\frac{1}{2}\) |
\(- \frac{\sqrt{3}}{2}\) |
|
\(-1\) |
\(0\) |
|
\(2\) |
\(0\) |
|
\(\frac{1}{2}\) |
\(- \frac{\sqrt{15}}{2}\) |
|
\(\frac{1}{2}\) |
\(\frac{\sqrt{15}}{2}\) |
Certified Golden Ratio: CD / DX = GoldenRatio.