X1141

GIBERT POINT

In Jean-Pierre Ehrmann and Bernard Gibert, “Special Isocubics,” downloadable from Cubics in the Triangle Plane, the point X1141 is labeled E, barycentrics are given, and it is established that this point also lies on the line X5-to-X110 [listed below as 5,49], two other cubics, and the hyperbola that passes through the points A, B, C, X4, 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) { 5, 49 }: Central Line L(5, 49) { 2, 128 }: Central Line L(2, 128) { 4, 137 }: Central Line L(4, 137) { 53, 112 }: Central Line L(53, 112) { 79, 109 }: Central Line L(79, 109) { 94, 96 }: Central Line L(94, 96) A = Vertex A (0.0000, 0.0000) B = Vertex B (1.0000, 0.0000) C = Vertex C (0.6122, 0.5999) X_5 = NINE-POINT CENTER (0.5561, 0.2489) X_49 = CENTER OF SINE-TRIPLE-ANGLE CIRCLE (0.6275, 0.1789) X_2 = CENTROID (0.5374, 0.2000) X_128 = -OF-ORTHIC-TRIANGLE (0.3310, 0.3690) X_4 = ORTHOCENTER (0.6122, 0.3958) X_137 = -OF-ORTHIC-TRIANGLE (0.7813, 0.1289) X_53 = SYMMEDIAN POINT OF ORTHIC TRIANGLE (0.6164, 0.4390) X_112 = Ψ(ORTHOCENTER, SYMMEDIAN POINT) (0.5162, 0.6121) X_79 = ISOGONAL CONJUGATE OF X(35) (0.5976, 0.3019) X_109 = Ψ(INCENTER, CIRCUMCENTER) (0.3636, 0.5938) X_94 = ISOGONAL CONJUGATE OF X(50) (0.9069, -0.1331) X_96 = ISOGONAL CONJUGATE OF X(52) (-0.0943, -0.0197) X_1141 = GIBERT POINT (-0.0724, -0.2027) A B C X5 X49 X2 X128 X4 X137 X53 X112 X79 X109 X94 X96 X1141 (a, b, c) = (5, 6, 7) | AB = 1

X1141 (GIBERT POINT) constructed on acute reference triangle \((a, b, c) = (5, 6, 7)\) with unit baseline AB = \(1\).

"""GEOMETOR construction model for X_1141 = GIBERT 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,
            construct_baseline_triangle,
            create_model,
            eval_trilinear_point,
            nine_point_center_of,
            orthocenter_of,
            point_from_barycentrics,
            promote_point_to_top,
        )
        from geometor.etc.render import write_center_svg


        def construct_x_01141(
            model: Model, A: spg.Point, B: spg.Point, C: spg.Point
        ) -> spg.Point:
            """Construct X_1141 = GIBERT POINT on reference triangle ABC."""
            X_1141 = eval_trilinear_point(model, A, B, C, 'b*c/(16*D**(2) + (a**(2)+c**(2)-b**(2))*(a**(2)+b**(2)-c**(2)))*(16*D**(2) - 3*(b**(2)+c**(2)-a**(2))**(2))', ID="X_1141", classes=["selected", "target"])
            X_5 = nine_point_center_of(model, A, B, C, ID="X_5", classes=["center", "incident"])
            X_49 = eval_trilinear_point(model, A, B, C, 'cos(3*A)', ID="X_49", classes=["center", "incident"])
            central_line(model, X_5, X_49, 5, 49, incident=True)
            X_2 = centroid_of(model, A, B, C, ID="X_2", classes=["center", "incident"])
            X_128 = eval_trilinear_point(model, A, B, C, '((sec(A))*(cos(2*B) + cos(2*C))*(1 + 2*cos(2*A))*(cos(2*A) + 2*cos(2*B)*cos(2*C)))', ID="X_128", classes=["center", "incident"])
            central_line(model, X_2, X_128, 2, 128, incident=True)
            X_4 = orthocenter_of(model, A, B, C, ID="X_4", classes=["center", "incident"])
            X_137 = point_from_barycentrics(model, A, B, C, 0.1354431, 0.64976082, 0.21479608, ID="X_137", classes=["center", "incident"])
            central_line(model, X_4, X_137, 4, 137, incident=True)
            return promote_point_to_top(model, X_1141)


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