X3599

2nd LIU POINT

Let PAPBPC be as at X3598. Let TA be the point of intersection of the lines BPC and CPB. X3599 is the perspector of triangles PAPBPC and TATBTC.
< 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) { 2, 7 }: Centroid–Gergonne Line { 165, 279 }: Central Line L(165, 279) { 55, 479 }: Central Line L(55, 479) { 651, 1190 }: Central Line L(651, 1190) A = Vertex A (0.0000, 0.0000) B = Vertex B (1.0000, 0.0000) C = Vertex C (0.6122, 0.5999) X_2 = CENTROID (0.5374, 0.2000) X_7 = GERGONNE POINT (0.5903, 0.2769) X_165 = CENTROID OF THE EXCENTRAL TRIANGLE (0.4762, 0.0583) X_279 = ISOGONAL CONJUGATE OF X(220) (0.6236, 0.3540) X_55 = INSIMILICENTER(CIRCUMCIRCLE, INCIRCLE) (0.5490, 0.1921) X_479 = -CROSS CONJUGATE OF X(279) (0.6392, 0.4221) X_651 = TRILINEAR POLE OF LINE X(1)X(3) (0.3048, 0.5599) X_1190 = 2nd SARAGOSSA POINT OF X(55) (0.5884, 0.2303) X_3599 = 2nd LIU POINT (0.5716, 0.2497) A B C X2 X7 X165 X279 X55 X479 X651 X1190 X3599 (a, b, c) = (5, 6, 7) | AB = 1

X3599 (2nd LIU POINT) constructed on acute reference triangle \((a, b, c) = (5, 6, 7)\) with unit baseline AB = \(1\).

"""GEOMETOR construction model for X_3599 = 2nd LIU 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,
            gergonne_point_of,
            promote_point_to_top,
        )
        from geometor.etc.render import write_center_svg


        def construct_x_03599(
            model: Model, A: spg.Point, B: spg.Point, C: spg.Point
        ) -> spg.Point:
            """Construct X_3599 = 2nd LIU POINT on reference triangle ABC."""
            X_3599 = eval_trilinear_point(model, A, B, C, 'b*c*(a - b + c)*(a + b - c)*(5*a**(4) + b**(4) + c**(4) - 8*a**(3)*b - 8*a**(3)*c - 4*b**(3)*c - 4*b*c**(3) + 6*b**(2)*c**(2) + 2*a**(2)*b**(2) + 2*a**(2)*c**(2) + 12*a**(2)*b*c)', ID="X_3599", classes=["selected", "target"])
            X_2 = centroid_of(model, A, B, C, ID="X_2", classes=["center", "incident"])
            X_7 = gergonne_point_of(model, A, B, C, ID="X_7", classes=["center", "incident"])
            central_line(model, X_2, X_7, 2, 7, incident=True)
            X_165 = eval_trilinear_point(model, A, B, C, 'tan(B/2) + tan(C/2) - tan(A/2)', ID="X_165", classes=["center", "incident"])
            X_279 = eval_trilinear_point(model, A, B, C, 'csc(A)*(tan(A/2))**(2)', ID="X_279", classes=["center", "incident"])
            central_line(model, X_165, X_279, 165, 279, incident=True)
            X_55 = eval_trilinear_point(model, A, B, C, 'a*(b + c - a)', ID="X_55", classes=["center", "incident"])
            X_479 = eval_trilinear_point(model, A, B, C, '(tan(A/2)*sec(A/2))**(2)', ID="X_479", classes=["center", "incident"])
            central_line(model, X_55, X_479, 55, 479, incident=True)
            return promote_point_to_top(model, X_3599)


        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_3599 on the given reference triangle."""
            model = create_model('X_3599 = 2nd LIU POINT')
            A, B, C = construct_baseline_triangle(model, *sides, show_guides=show_guides)
            construct_x_03599(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-03599.json"))
            write_center_svg(
                model_acute,
                here / "x-03599.svg",
                subtitle="(a, b, c) = (5, 6, 7) | AB = 1",
            )