X2594¶
SUM OF PU(68)
The notation “PU(68)”, as described in the Bicentric Pairs section accessible by the Tables button, abbreviates a bicentric pair of points P =\(p : q : r\) and U =\(u : v : w\), where p, q, r have the form g(a,b,c), g(b,c,a), g(c,a,b) and u,v,w have the form h(a,b,c), h(b,c,a), h(c,a,b). “Sum of PU(68)” denotes the point
X2594 (SUM OF PU(68)) constructed on acute reference triangle \((a, b, c) = (5, 6, 7)\) with unit baseline AB = \(1\).¶
"""GEOMETOR construction model for X_2594 = SUM OF PU(68)."""
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,
construct_baseline_triangle,
create_model,
eval_trilinear_point,
incenter_of,
nine_point_center_of,
promote_point_to_top,
)
from geometor.etc.render import write_center_svg
def construct_x_02594(
model: Model, A: spg.Point, B: spg.Point, C: spg.Point
) -> spg.Point:
"""Construct X_2594 = SUM OF PU(68) on reference triangle ABC."""
X_2594 = eval_trilinear_point(model, A, B, C, '(cos(C- A) + cos(B - A))', ID="X_2594", classes=["selected", "target"])
X_1 = incenter_of(model, A, B, C, ID="X_1", classes=["center", "incident"])
X_5 = nine_point_center_of(model, A, B, C, ID="X_5", classes=["center", "incident"])
central_line(model, X_1, X_5, 1, 5, incident=True)
X_42 = eval_trilinear_point(model, A, B, C, 'a*(b + c)', ID="X_42", classes=["center", "incident"])
X_65 = eval_trilinear_point(model, A, B, C, 'cos(B) + cos(C)', ID="X_65", classes=["center", "incident"])
central_line(model, X_42, X_65, 42, 65, incident=True)
X_59 = eval_trilinear_point(model, A, B, C, '1/(1 - cos(B - C))', ID="X_59", classes=["center", "incident"])
X_60 = eval_trilinear_point(model, A, B, C, '1/(1 + cos(B - C))', ID="X_60", classes=["center", "incident"])
central_line(model, X_59, X_60, 59, 60, incident=True)
return promote_point_to_top(model, X_2594)
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_2594 on the given reference triangle."""
model = create_model('X_2594 = SUM OF PU(68)')
A, B, C = construct_baseline_triangle(model, *sides, show_guides=show_guides)
construct_x_02594(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-02594.json"))
write_center_svg(
model_acute,
here / "x-02594.svg",
subtitle="(a, b, c) = (5, 6, 7) | AB = 1",
)