X574

HARMONIC OF X187

“Each one of the three circles of Apollonius of the reference triangle cuts the circumcircle in a second point. These three points form a triangle which is perspective with the base triangle through the symmedian point, the co-symmedian triangle. This triangle also possesses a Neuberg cubic, which has three points in common with the cubic of the first triangle in the circumcenter and the two isodynamic centers. Hence the remaining points of intersection must lie on a conic, which is necessarily a circle, since two of these six points are the circular points I and J.” Quoted from (T. W. Moore and J. H. Neelley). The center of the circle is X574. (Bernard Gibert, euclid 4332)
< 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) { 3, 6 }: Brocard Axis { 2, 99 }: Central Line L(2, 99) { 110, 353 }: Central Line L(110, 353) { 232, 378 }: Central Line L(232, 378) { 183, 538 }: Central Line L(183, 538) { 230, 549 }: Central Line L(230, 549) A = Vertex A (0.0000, 0.0000) B = Vertex B (1.0000, 0.0000) C = Vertex C (0.6122, 0.5999) X_3 = CIRCUMCENTER (0.5000, 0.1021) X_6 = SYMMEDIAN POINT (LEMOINE POINT, GREBE POINT) (0.6000, 0.2672) X_2 = CENTROID (0.5374, 0.2000) X_99 = STEINER POINT (0.1109, 0.4322) X_110 = FOCUS OF KIEPERT PARABOLA (0.2516, 0.5478) X_353 = INVERSE-IN-BROCARD-CIRCLE OF X(111) (0.5667, 0.1759) X_232 = -CEVA CONJUGATE OF X(132) (0.6919, 0.7779) X_378 = REFLECTION OF X(22) IN X(3) (0.5857, 0.3262) X_183 = TRILINEAR PRODUCT X(75)X(182) (0.4700, 0.1275) X_538 = DIRECTION OF VECTOR AX + BX + CX, where X = X(39) (1.0053, 0.5542) X_230 = -CEVA CONJUGATE OF X(114) (0.9746, 0.6698) X_549 = MIDPOINT OF X(2) AND X(3) (0.5187, 0.1510) X_574 = HARMONIC OF X(187) (0.5539, 0.1910) A B C X3 X6 X2 X99 X110 X353 X232 X378 X183 X538 X230 X549 X574 (a, b, c) = (5, 6, 7) | AB = 1

X574 (HARMONIC OF X187) constructed on acute reference triangle \((a, b, c) = (5, 6, 7)\) with unit baseline AB = \(1\).

"""GEOMETOR construction model for X_574 = HARMONIC OF X_187."""

        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,
            centroid_of,
            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_00574(
            model: Model, A: spg.Point, B: spg.Point, C: spg.Point
        ) -> spg.Point:
            """Construct X_574 = HARMONIC OF X_187 on reference triangle ABC."""
            X_574 = eval_trilinear_point(model, A, B, C, 'a*(a**(2) - 2*b**(2) - 2*c**(2))', ID="X_574", classes=["selected", "target"])
            X_3 = circumcenter_of(model, A, B, C, ID="X_3", classes=["center", "incident"])
            X_6 = symmedian_point_of(model, A, B, C, ID="X_6", classes=["center", "incident"])
            central_line(model, X_3, X_6, 3, 6, incident=True)
            X_2 = centroid_of(model, A, B, C, ID="X_2", classes=["center", "incident"])
            X_99 = eval_trilinear_point(model, A, B, C, 'b*c/(b**(2) - c**(2))', ID="X_99", classes=["center", "incident"])
            central_line(model, X_2, X_99, 2, 99, incident=True)
            X_110 = eval_trilinear_point(model, A, B, C, 'csc(B - C)', ID="X_110", classes=["center", "incident"])
            X_353 = eval_trilinear_point(model, A, B, C, '(a*(4*a**(4) - 2*b**(4) - 2*c**(4) - b**(2)*c**(2) - 4*a**(2)*b**(2) -4*a**(2)*c**(2)))', ID="X_353", classes=["center", "incident"])
            central_line(model, X_110, X_353, 110, 353, incident=True)
            return promote_point_to_top(model, X_574)


        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_574 on the given reference triangle."""
            model = create_model('X_574 = HARMONIC OF X_187')
            A, B, C = construct_baseline_triangle(model, *sides, show_guides=show_guides)
            construct_x_00574(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-00574.json"))
            write_center_svg(
                model_acute,
                here / "x-00574.svg",
                subtitle="(a, b, c) = (5, 6, 7) | AB = 1",
            )