X2076¶
INVERSE-IN-CIRCUMCIRCLE OF X39
Let T1 be the circumcevian triangle of the 1st Brocard point, and let T2 be the circumcevian triangle of the 2nd Brocard point. Let VAVBVC be the vertex triangle of T1 and T2, and let \(S_{A}\)\(S_{B}\)\(S_{C}\) be the side triangle of T1 and T2. The lines VA\(S_{A}\), VB\(S_{B}\), VC\(S_{C}\) concur in X2076.
X2076 (INVERSE-IN-CIRCUMCIRCLE OF X39) constructed on acute reference triangle \((a, b, c) = (5, 6, 7)\) with unit baseline AB = \(1\).¶
"""GEOMETOR construction model for X_2076 = INVERSE-IN-CIRCUMCIRCLE OF X_39."""
from __future__ import annotations
from pathlib import Path
import sympy.geometry as spg
from geometor.model import Model
from geometor.etc.ops import (
central_line,
ceva_conjugate,
circumcenter_of,
construct_baseline_triangle,
create_model,
eval_trilinear_point,
promote_point_to_top,
symmedian_point_of,
)
from geometor.etc.render import write_center_svg
def construct_x_02076(
model: Model, A: spg.Point, B: spg.Point, C: spg.Point
) -> spg.Point:
"""Construct X_2076 = INVERSE-IN-CIRCUMCIRCLE OF X_39 on reference triangle ABC."""
X_694 = eval_trilinear_point(model, A, B, C, 'a/(a**(4) - b**(2)*c**(2))', ID="X_694", classes=["center"])
X_6 = symmedian_point_of(model, A, B, C, ID="X_6", classes=["center"])
X_2076 = ceva_conjugate(model, A, B, C, X_694, X_6, ID="X_2076", classes=["selected", "target"])
X_3 = circumcenter_of(model, A, B, C, ID="X_3", classes=["center", "incident"])
central_line(model, X_3, X_6, 3, 6, incident=True)
X_141 = eval_trilinear_point(model, A, B, C, 'b*c*(b**(2) + c**(2))', ID="X_141", classes=["center", "incident"])
X_384 = eval_trilinear_point(model, A, B, C, 'b*c*(a**(4) + b**(2)*c**(2))', ID="X_384", classes=["center", "incident"])
central_line(model, X_141, X_384, 141, 384, incident=True)
X_99 = eval_trilinear_point(model, A, B, C, 'b*c/(b**(2) - c**(2))', ID="X_99", classes=["center", "incident"])
X_732 = eval_trilinear_point(model, A, B, C, '(a **(-3)*(b**(2) + c**(2)) - a**(1)*(b **(-2) + c **(-2)))', ID="X_732", classes=["center", "incident"])
central_line(model, X_99, X_732, 99, 732, incident=True)
return promote_point_to_top(model, X_2076)
def build_model(
sides: tuple[float, float, float] = (5.0, 6.0, 7.0),
show_guides: bool = False,
) -> Model:
"""Build a `geometor.model.Model` for X_2076 on the given reference triangle."""
model = create_model('X_2076 = INVERSE-IN-CIRCUMCIRCLE OF X_39')
A, B, C = construct_baseline_triangle(model, *sides, show_guides=show_guides)
construct_x_02076(model, A, B, C)
return model
if __name__ == "__main__":
here = Path(__file__).resolve().parent
model_acute = build_model((5.0, 6.0, 7.0))
model_acute.save(str(here / "x-02076.json"))
write_center_svg(
model_acute,
here / "x-02076.svg",
subtitle="(a, b, c) = (5, 6, 7) | AB = 1",
)