X1655

2nd HATZIPOLAKIS PARALLELIAN POINT

Continuing from the description of X1654, let h(B,A) be the distance from the point BA to the line CA, and define five other distances cyclically. If P = X1655, then
< A B C >: Reference Triangle △ABC < K_a K_b K_c >: Anticomplementary Triangle △K_a K_b K_c [ A B ]: Sideline AB (Base c = 1) [ B C ]: Sideline BC (Side a) [ C A ]: Sideline CA (Side b) { 2, 274 }: Central Line L(2, 274) { 2, 39 }: Central Line L(2, 39) { 8, 192 }: Central Line L(8, 192) { 21, 385 }: Central Line L(21, 385) { 193, 452 }: Central Line L(193, 452) A = Vertex A (0.0000, 0.0000) B = Vertex B (1.0000, 0.0000) C = Vertex C (0.6122, 0.5999) K_a = Anticomplementary Vertex K_a (1.6122, 0.5999) K_b = Anticomplementary Vertex K_b (-0.3878, 0.5999) K_c = Anticomplementary Vertex K_c (0.3878, -0.5999) X_2 = CENTROID (0.5374, 0.2000) X_274 = ISOGONAL CONJUGATE OF X(213) (0.5168, 0.1843) X_39 = BROCARD MIDPOINT (0.5778, 0.2305) X_8 = NAGEL POINT (0.4694, 0.1333) X_192 = -CEVA CONJUGATE OF X(2) (CONGRUENT PARALLELIANS POINT) (0.6147, 0.2635) X_21 = SCHIFFLER POINT (0.5287, 0.1771) X_385 = -HIRST INVERSE OF X(6) (2.2863, 2.0795) X_193 = -CEVA CONJUGATE OF X(2) (0.7878, 0.4690) X_452 = -HIRST INVERSE OF X(449) (0.5268, 0.1722) X_1655 = 2nd HATZIPOLAKIS PARALLELIAN POINT (0.5787, 0.2312) A B C Ka Kb Kc X2 X274 X39 X8 X192 X21 X385 X193 X452 X1655 (a, b, c) = (5, 6, 7) | AB = 1

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

"""GEOMETOR construction model for X_1655 = 2nd HATZIPOLAKIS PARALLELIAN POINT."""

        from __future__ import annotations

        from pathlib import Path

        import sympy.geometry as spg
        from geometor.model import Model

        from geometor.etc.ops import (
            anticomplement,
            central_line,
            centroid_of,
            construct_baseline_triangle,
            create_model,
            eval_trilinear_point,
            nagel_point_of,
            promote_point_to_top,
        )
        from geometor.etc.render import write_center_svg


        def construct_x_01655(
            model: Model, A: spg.Point, B: spg.Point, C: spg.Point
        ) -> spg.Point:
            """Construct X_1655 = 2nd HATZIPOLAKIS PARALLELIAN POINT on reference triangle ABC."""
            X_274 = eval_trilinear_point(model, A, B, C, 'b**(2)*c**(2)/(b + c)', ID="X_274", classes=["center"])
            X_1655 = anticomplement(model, A, B, C, X_274, ID="X_1655", classes=["selected", "target"])
            X_2 = centroid_of(model, A, B, C, ID="X_2", classes=["center", "incident"])
            X_39 = eval_trilinear_point(model, A, B, C, 'a*(b**(2) + c**(2))', ID="X_39", classes=["center", "incident"])
            central_line(model, X_2, X_39, 2, 39, incident=True)
            X_8 = nagel_point_of(model, A, B, C, ID="X_8", classes=["center", "incident"])
            X_192 = eval_trilinear_point(model, A, B, C, 'b*c*(c*a + a*b - b*c)', ID="X_192", classes=["center", "incident"])
            central_line(model, X_8, X_192, 8, 192, incident=True)
            X_21 = eval_trilinear_point(model, A, B, C, '1/(cos(B) + cos(C))', ID="X_21", classes=["center", "incident"])
            X_385 = eval_trilinear_point(model, A, B, C, 'b*c*(a**(4) - b**(2)*c**(2))', ID="X_385", classes=["center", "incident"])
            central_line(model, X_21, X_385, 21, 385, incident=True)
            return promote_point_to_top(model, X_1655)


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