X3913

X10com[INVERSE(n(INTOUCH TRIANGLE))]

Let OA be the circle tangent to side BC at its midpoint and to the circumcircle on the same side of BC as A. Define OB and OC cyclically. X3913 is the radical center of the circles OA, OB, OC. See the reference at X1001.
< 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) incircle: Incircle of △ABC { 8, 21 }: Central Line L(8, 21) { 56, 100 }: Central Line L(56, 100) { 65, 224 }: Central Line L(65, 224) { 1, 474 }: Central Line L(1, 474) { 3, 519 }: Central Line L(3, 519) { 4, 528 }: Central Line L(4, 528) 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_8 = NAGEL POINT (0.4694, 0.1333) X_21 = SCHIFFLER POINT (0.5287, 0.1771) X_56 = EXSIMILICENTER(CIRCUMCIRCLE, INCIRCLE) (0.6316, 0.3438) X_100 = ANTICOMPLEMENT OF FEUERBACH POINT (0.1429, 0.4666) X_65 = ORTHOCENTER OF THE INTOUCH TRIANGLE (0.6041, 0.2933) X_224 = -CEVA CONJUGATE OF X(63) (1.2479, 0.4419) X_474 = EULER LINE INTERCEPT OF LINE X(10)X(56) (0.5441, 0.2176) X_3 = CIRCUMCENTER (0.5000, 0.1021) X_519 = ISOGONAL CONJUGATE OF X(106) (0.9566, 0.6107) X_4 = ORTHOCENTER (0.6122, 0.3958) X_528 = DIRECTION OF VECTOR AX + BX + CX, where X = X(11) (1.0237, -0.1286) X_3913 = com[INVERSE(n(INTOUCH TRIANGLE))] (0.7232, 0.3208) A B C X1 X8 X21 X56 X100 X65 X224 X474 X3 X519 X4 X528 X3913 (a, b, c) = (5, 6, 7) | AB = 1

X3913 (X10com[INVERSE(n(INTOUCH TRIANGLE))]) constructed on acute reference triangle \((a, b, c) = (5, 6, 7)\) with unit baseline AB = \(1\).

"""GEOMETOR construction model for X_3913 = X_10com[INVERSE(n(INTOUCH TRIANGLE))]."""

        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_barycentric_point,
            eval_trilinear_point,
            nagel_point_of,
            promote_point_to_top,
        )
        from geometor.etc.render import write_center_svg


        def construct_x_03913(
            model: Model, A: spg.Point, B: spg.Point, C: spg.Point
        ) -> spg.Point:
            """Construct X_3913 = X_10com[INVERSE(n(INTOUCH TRIANGLE))] on reference triangle ABC."""
            X_3913 = eval_barycentric_point(model, A, B, C, '(a*(b + c - a)*(a**(2) + a*b + a*c - 2*b*c))', ID="X_3913", classes=["selected", "target"])
            X_8 = nagel_point_of(model, A, B, C, ID="X_8", classes=["center", "incident"])
            X_21 = eval_trilinear_point(model, A, B, C, '1/(cos(B) + cos(C))', ID="X_21", classes=["center", "incident"])
            central_line(model, X_8, X_21, 8, 21, incident=True)
            X_56 = eval_trilinear_point(model, A, B, C, 'a/(b + c - a)', ID="X_56", classes=["center", "incident"])
            X_100 = eval_trilinear_point(model, A, B, C, '1/(b - c)', ID="X_100", classes=["center", "incident"])
            central_line(model, X_56, X_100, 56, 100, incident=True)
            X_65 = eval_trilinear_point(model, A, B, C, 'cos(B) + cos(C)', ID="X_65", classes=["center", "incident"])
            X_224 = eval_trilinear_point(model, A, B, C, '(cot(B)*(cos(B/2))**(2) + cot(C)*(cos(C/2))**(2) - cot(A)*(cos(A/2))**(2))*cot(A)', ID="X_224", classes=["center", "incident"])
            central_line(model, X_65, X_224, 65, 224, incident=True)
            return promote_point_to_top(model, X_3913)


        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_3913 on the given reference triangle."""
            model = create_model('X_3913 = X_10com[INVERSE(n(INTOUCH TRIANGLE))]')
            A, B, C = construct_baseline_triangle(model, *sides, show_guides=show_guides)
            construct_x_03913(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-03913.json"))
            write_center_svg(
                model_acute,
                here / "x-03913.svg",
                subtitle="(a, b, c) = (5, 6, 7) | AB = 1",
            )