X6

SYMMEDIAN POINT (LEMOINE POINT, GREBE POINT)

X6 is the point of concurrence of the symmedians (i.e., reflections of medians in corresponding angle bisectors). X6 is the point which, when given by actual trilinear distances x,y,z, minimizes \(x^{2}\) + \(y^{2}\) + \(z^{2}\).
< A B C >: Reference Triangle △ABC < Tan_a Tan_b Tan_c >: Tangential Triangle △Tan_a Tan_b Tan_c [ A B ]: Sideline AB (Base c = 1) [ B C ]: Sideline BC (Side a) [ C A ]: Sideline CA (Side b) circumcircle: Circumcircle of △ABC [ A Tan_a ]: A-Symmedian [ B Tan_b ]: B-Symmedian [ C Tan_c ]: C-Symmedian { 1, 9 }: Incenter–Symmedian Line { 3, 15 }: Brocard Axis { 13, 14 }: Central Line L(13, 14) { 17, 18 }: Central Line L(17, 18) 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) Tan_a = Tangential Vertex Tan_a (1.1000, 0.4899) Tan_b = Tangential Vertex Tan_b (-0.1579, 0.7735) Tan_c = Tangential Vertex Tan_c (0.5000, -2.4495) X_1 = INCENTER (0.5714, 0.2333) X_9 = MITTENPUNKT (0.5110, 0.1615) X_15 = 1st ISODYNAMIC POINT (0.5519, 0.1878) X_13 = 1st ISOGONIC CENTER (FERMAT POINT, TORRICELLI POINT) (0.5879, 0.2819) X_14 = 2nd ISOGONIC CENTER (0.9134, -0.1143) X_17 = 1st NAPOLEON POINT (0.5666, 0.2383) X_18 = 2nd NAPOLEON POINT (0.4434, 0.1317) X_6 = SYMMEDIAN POINT (LEMOINE POINT, GREBE POINT) (0.6000, 0.2672) A B C X3 Tana Tanb Tanc X1 X9 X15 X13 X14 X17 X18 X6

X6 (SYMMEDIAN POINT (LEMOINE POINT, GREBE POINT)) constructed on acute reference triangle \((a, b, c) = (5, 6, 7)\) with unit baseline AB = \(1\).

"""GEOMETOR construction model for X_6 = SYMMEDIAN 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,
            circumcenter_of,
            construct_baseline_triangle,
            create_model,
            eval_trilinear_point,
            incenter_of,
            mittenpunkt_of,
            promote_point_to_top,
            symmedian_point_of,
        )
        from geometor.etc.render import write_center_svg


        def construct_x_00006(
            model: Model, A: spg.Point, B: spg.Point, C: spg.Point
        ) -> spg.Point:
            """Construct X_6 = SYMMEDIAN POINT on reference triangle ABC."""
            X_6 = symmedian_point_of(model, A, B, C, ID="X_6", classes=["selected", "target"], draw_symmedians=True)
            X_1 = incenter_of(model, A, B, C, ID="X_1", classes=["center", "incident"])
            X_9 = mittenpunkt_of(model, A, B, C, ID="X_9", classes=["center", "incident"])
            central_line(model, X_1, X_9, 1, 9, incident=True)
            X_3 = circumcenter_of(model, A, B, C, ID="X_3", classes=["center", "incident"])
            X_15 = eval_trilinear_point(model, A, B, C, 'sin(A +  pi  /3)', ID="X_15", classes=["center", "incident"])
            central_line(model, X_3, X_15, 3, 15, incident=True)
            X_13 = eval_trilinear_point(model, A, B, C, 'csc(A +  pi  /3)', ID="X_13", classes=["center", "incident"])
            X_14 = eval_trilinear_point(model, A, B, C, 'csc(A -  pi  /3)', ID="X_14", classes=["center", "incident"])
            central_line(model, X_13, X_14, 13, 14, incident=True)
            return promote_point_to_top(model, X_6)


        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_6 on the given reference triangle."""
            model = create_model('X_6 = SYMMEDIAN POINT')
            A, B, C = construct_baseline_triangle(model, *sides, show_guides=show_guides)
            construct_x_00006(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-00006.json"))
            write_center_svg(
                model_acute,
                here / "x-00006.svg",
                subtitle="(a, b, c) = (5, 6, 7) | AB = 1",
            )