X2028

1st BROCARD-AXIS-MOSES-CIRCLE INTERSECTION

Of the two points of intersection of the Brocard axis, X3X6 with the Moses circle, X2028 is the one nearer to X3. Points X2028 and X2029 are the points of intersection of the Brocard axis and the asymptotes of the Kiepert hyperbola; see X2039 and X2040. For a description of the Moses circle and others, see the notes just above X1662.
< 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 { 115, 2039 }: Central Line L(115, 2039) { 1506, 2040 }: Central Line L(1506, 2040) 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_115 = CENTER OF KIEPERT HYPERBOLA (0.7507, 0.0838) X_2039 = 1st NINE-POINT-CIRCLE-KIEPERT-ASYMPTOTES INTERSECTION (0.4240, 0.0306) X_1506 = INSIMILICENTER OF MOSES AND NINE-POINT CIRCLES (0.5676, 0.2392) X_2040 = = 2nd NINE-POINT-CIRCLE-KIEPERT-ASYMPTOTES INTERSECTION (0.6883, 0.4672) X_2028 = 1st BROCARD-AXIS-MOSES-CIRCLE INTERSECTION (0.4603, 0.0366) A B C X3 X6 X115 X2039 X1506 X2040 X2028 (a, b, c) = (5, 6, 7) | AB = 1

X2028 (1st BROCARD-AXIS-MOSES-CIRCLE INTERSECTION) constructed on acute reference triangle \((a, b, c) = (5, 6, 7)\) with unit baseline AB = \(1\).

"""GEOMETOR construction model for X_2028 = 1st BROCARD-AXIS-MOSES-CIRCLE INTERSECTION."""

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


        def construct_x_02028(
            model: Model, A: spg.Point, B: spg.Point, C: spg.Point
        ) -> spg.Point:
            """Construct X_2028 = 1st BROCARD-AXIS-MOSES-CIRCLE INTERSECTION on reference triangle ABC."""
            X_2028 = eval_trilinear_point(model, A, B, C, '(sin(A) - e*sin(A +  omega  ) - sin(A + 2*omega  ))', ID="X_2028", 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_115 = eval_trilinear_point(model, A, B, C, 'b*c*(b**(2) - c**(2))**(2)', ID="X_115", classes=["center", "incident"])
            X_2039 = eval_trilinear_point(model, A, B, C, 'e*cos(A) + 2*e*cos(B)*cos(C) + cos(A +  omega  )', ID="X_2039", classes=["center", "incident"])
            central_line(model, X_115, X_2039, 115, 2039, incident=True)
            X_1506 = eval_trilinear_point(model, A, B, C, 'b*c*((b**(2) - c**(2))**(2) - 2*a**(2)*(b**(2) + c**(2)))', ID="X_1506", classes=["center", "incident"])
            X_2040 = eval_trilinear_point(model, A, B, C, 'e*cos(A) + 2*e*cos(B)*cos(C) - cos(A +  omega  )', ID="X_2040", classes=["center", "incident"])
            central_line(model, X_1506, X_2040, 1506, 2040, incident=True)
            return promote_point_to_top(model, X_2028)


        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_2028 on the given reference triangle."""
            model = create_model('X_2028 = 1st BROCARD-AXIS-MOSES-CIRCLE INTERSECTION')
            A, B, C = construct_baseline_triangle(model, *sides, show_guides=show_guides)
            construct_x_02028(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-02028.json"))
            write_center_svg(
                model_acute,
                here / "x-02028.svg",
                subtitle="(a, b, c) = (5, 6, 7) | AB = 1",
            )