X600

3rd HATZIPOLAKIS-YIU POINT

Let OA be the circle with center A and radius R, the circumradius of triangle ABC. Let BA be the point where OA meets line AB farthest from B. Define CB and AC cyclically. Let CA be the point where OA meets line AC farthest from C. Define AB and BC cyclically. X600 is the radical center of the circles ABACA, BCBAB, CACBC. If “farthest from” is changed to “nearest to” in the construction, the resulting point is X5507. (Antreas Hatzipolakis, Paul Yiu, 1/5/01, Hyacinthos #2344, #2346-8; for a correction in coordinates, see Paul Yiu, Adgeom #202.)
< A B C >: Reference Triangle △ABC [ A B ]: Sideline AB (Base c = 1) [ B C ]: Sideline BC (Side a) [ C A ]: Sideline CA (Side b) A = Vertex A (0.0000, 0.0000) B = Vertex B (1.0000, 0.0000) C = Vertex C (0.6122, 0.5999) X_600 = 3rd HATZIPOLAKIS-YIU POINT (0.5029, 0.1275) A B C X600 (a, b, c) = (5, 6, 7) | AB = 1

X600 (3rd HATZIPOLAKIS-YIU POINT) constructed on acute reference triangle \((a, b, c) = (5, 6, 7)\) with unit baseline AB = \(1\).

"""GEOMETOR construction model for X_600 = 3rd HATZIPOLAKIS-YIU POINT."""

        from __future__ import annotations

        from pathlib import Path

        import sympy.geometry as spg
        from geometor.model import Model

        from geometor.etc.ops import (
            construct_baseline_triangle,
            create_model,
            eval_barycentric_point,
            promote_point_to_top,
        )
        from geometor.etc.render import write_center_svg


        def construct_x_00600(
            model: Model, A: spg.Point, B: spg.Point, C: spg.Point
        ) -> spg.Point:
            """Construct X_600 = 3rd HATZIPOLAKIS-YIU POINT on reference triangle ABC."""
            X_600 = eval_barycentric_point(model, A, B, C, '(a**(2)*(b*c + 2*S)*(a*b*c*(b + c - a) + 2*(b**(2) + c**(2) - a**(2))*S))', ID="X_600", classes=["selected", "target"])
            return promote_point_to_top(model, X_600)


        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_600 on the given reference triangle."""
            model = create_model('X_600 = 3rd HATZIPOLAKIS-YIU POINT')
            A, B, C = construct_baseline_triangle(model, *sides, show_guides=show_guides)
            construct_x_00600(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-00600.json"))
            write_center_svg(
                model_acute,
                here / "x-00600.svg",
                subtitle="(a, b, c) = (5, 6, 7) | AB = 1",
            )