Heron’s Formula Synthetic Proof & Quadrea (Metrica I.8)¶
Exact Compass-and-Straightedge Model of Hero’s Incircle & Cyclic Quadrilateral Proof — Codex Reference: Metrica Book I (Preface & Props. 1–9): Triangles, Heron’s Formula & √720
Interactive Construction (heron-i8-incircle.svg)¶
Hover or click any geometric label below—such as ABC, incenter H, cyclic quadrilateral CHBL, or extended semiperimeter CG—to trace Hero's synthetic proof step-by-step:
Exact Symbolic Coordinates & Deductive Chain¶
On Hero’s synthesis triangle \((AB, BC, CA) = (13, 14, 15)\) placed at B \(= (0, 0)\), C \(= (14, 0)\), and A \(= (5, 12)\):
Incenter & Inradius: Internal angle bisectors meet at H \(= (6, 4)\) (X(1) in Kimberling's ETC), with touchpoints E \(= (6, 0)\), D \(= \left(\frac{30}{13}, \frac{72}{13}\right)\), and F \(= \left(\frac{46}{5}, \frac{32}{5}\right)\) of radius HE \(r = 4\).
Extended Semiperimeter: Compass extension past B locates G \(= (-7, 0)\) so that BG = AD \(= s - a = 7\) and CG \(= s = 21\), certifying \(\Delta = s \cdot r = 21 \times 4 = 84\).
Cyclic Auxiliary Quadrilateral: Erecting \(HL \perp CH\) at H (meeting BC at K \(= (4, 0)\)) and \(BL \perp BC\) at B meets at L \(= (0, -8)\). Quadrilateral CHBL is inscribed in circle (MC) with center M \(= (7, -4)\) and squared radius \(Q(M, C) = 65\).
Right-Triangle Altitude Identity (:just:`VI.8`): In right triangle \(KHC\), altitude HE satisfies \(|KE| \cdot |EC| = 2 \times 8 = 16 = 4^2 = r^2\), completing Hero’s proportion:
\[\Delta^2 = |CG|^2 \cdot |HE|^2 = |CG| \cdot |BG| \cdot |BE| \cdot |EC| = 21 \times 7 \times 6 \times 8 = 7056 = 84^2.\]Wildberger’s Polynomial Quadrea: Over \(\mathbb{Z}[Q_a, Q_b, Q_c]\) with \((Q_a, Q_b, Q_c) = (196, 225, 169)\):
\[\mathcal{A} = (196 + 225 + 169)^2 - 2(196^2 + 225^2 + 169^2) = 112{,}896 = 16 \times 7056.\]
Executable Python API¶
from geometor.heron import archimedes_quadrea, construct_heron_proof, verify_quadrea_identity
model, inv = construct_heron_proof()
assert inv["area"] == 84
assert inv["quadrea"] == archimedes_quadrea(196, 225, 169) == 112896
assert verify_quadrea_identity() == 0