X498

YFF CONCURRENT CONGRUENT CIRCLES POINT

X498 and X499 are harmonic conjugate points with respect to X1 and X2, in analogy with such pairs with respect to X1, X4 and with respect to X1, X5.
< 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) { 1, 2 }: Nagel Line { 3, 12 }: Central Line L(3, 12) { 4, 35 }: Central Line L(4, 35) { 5, 55 }: Central Line L(5, 55) { 37, 91 }: Central Line L(37, 91) { 56, 140 }: Central Line L(56, 140) A = Vertex A (0.0000, 0.0000) B = Vertex B (1.0000, 0.0000) C = Vertex C (0.6122, 0.5999) X_1 = INCENTER (0.5714, 0.2333) X_2 = CENTROID (0.5374, 0.2000) X_3 = CIRCUMCENTER (0.5000, 0.1021) X_12 = {X(1),X(5)}-HARMONIC CONJUGATE OF X(11) (0.5641, 0.2407) X_4 = ORTHOCENTER (0.6122, 0.3958) X_35 = {X(1),X(3)}-HARMONIC CONJUGATE OF X(36) (0.5373, 0.1706) X_5 = NINE-POINT CENTER (0.5561, 0.2489) X_55 = INSIMILICENTER(CIRCUMCIRCLE, INCIRCLE) (0.5490, 0.1921) X_37 = CROSSPOINT OF INCENTER AND CENTROID (0.5567, 0.2158) X_91 = ISOGONAL CONJUGATE OF X(47) (-0.0865, -0.0205) X_56 = EXSIMILICENTER(CIRCUMCIRCLE, INCIRCLE) (0.6316, 0.3438) X_140 = MIDPOINT OF X(3) AND X(5) (0.5281, 0.1755) X_498 = YFF CONCURRENT CONGRUENT CIRCLES POINT (0.5518, 0.2140) A B C X1 X2 X3 X12 X4 X35 X5 X55 X37 X91 X56 X140 X498 (a, b, c) = (5, 6, 7) | AB = 1

X498 (YFF CONCURRENT CONGRUENT CIRCLES POINT) constructed on acute reference triangle \((a, b, c) = (5, 6, 7)\) with unit baseline AB = \(1\).

"""GEOMETOR construction model for X_498 = YFF CONCURRENT CONGRUENT CIRCLES POINT."""

        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,
            incenter_of,
            orthocenter_of,
            promote_point_to_top,
        )
        from geometor.etc.render import write_center_svg


        def construct_x_00498(
            model: Model, A: spg.Point, B: spg.Point, C: spg.Point
        ) -> spg.Point:
            """Construct X_498 = YFF CONCURRENT CONGRUENT CIRCLES POINT on reference triangle ABC."""
            X_498 = eval_trilinear_point(model, A, B, C, '1 + 2*sin(B)*sin(C)', ID="X_498", classes=["selected", "target"])
            X_1 = incenter_of(model, A, B, C, ID="X_1", classes=["center", "incident"])
            X_2 = centroid_of(model, A, B, C, ID="X_2", classes=["center", "incident"])
            central_line(model, X_1, X_2, 1, 2, incident=True)
            X_3 = circumcenter_of(model, A, B, C, ID="X_3", classes=["center", "incident"])
            X_12 = eval_trilinear_point(model, A, B, C, '1 + cos(B - C)', ID="X_12", classes=["center", "incident"])
            central_line(model, X_3, X_12, 3, 12, incident=True)
            X_4 = orthocenter_of(model, A, B, C, ID="X_4", classes=["center", "incident"])
            X_35 = eval_trilinear_point(model, A, B, C, '1 + 2*cos(A)', ID="X_35", classes=["center", "incident"])
            central_line(model, X_4, X_35, 4, 35, incident=True)
            return promote_point_to_top(model, X_498)


        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_498 on the given reference triangle."""
            model = create_model('X_498 = YFF CONCURRENT CONGRUENT CIRCLES POINT')
            A, B, C = construct_baseline_triangle(model, *sides, show_guides=show_guides)
            construct_x_00498(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-00498.json"))
            write_center_svg(
                model_acute,
                here / "x-00498.svg",
                subtitle="(a, b, c) = (5, 6, 7) | AB = 1",
            )