X173

CONGRUENT ISOSCELIZERS POINT

Let PB on sideline AC and QC be equidistant from A, so that APBQC is an isosceles triangle. The line PBQC is called an isoscelizer. The lines PBQC, PCQA, PAQB concur in X173. (P. Yff, unpublished notes, 1989)
< 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) { 1, 168 }: Central Line L(1, 168) { 9, 177 }: Central Line L(9, 177) { 57, 174 }: Central Line L(57, 174) { 180, 483 }: Central Line L(180, 483) { 164, 504 }: Central Line L(164, 504) { 503, 844 }: Central Line L(503, 844) A = Vertex A (0.0000, 0.0000) B = Vertex B (1.0000, 0.0000) C = Vertex C (0.6122, 0.5999) X_258 = CONGRUENT INCIRCLES ISOSCELIZER POINT (0.5464, 0.1945) X_1 = INCENTER (0.5714, 0.2333) X_168 = MITTENPUNKT OF EXCENTRAL TRIANGLE (0.4565, 0.0098) X_9 = MITTENPUNKT (0.5110, 0.1615) X_177 = 1st MID-ARC POINT (0.5862, 0.2654) X_57 = ISOGONAL CONJUGATE OF X(9) (0.6138, 0.3110) X_174 = YFF CENTER OF CONGRUENCE (0.5813, 0.2549) X_180 = 2nd AJIMA-MALFATTI POINT (0.5840, 0.2581) X_483 = RADICAL CENTER OF AJIMA-MALFATTI CIRCLES (0.5762, 0.2431) X_164 = INCENTER OF EXCENTRAL TRIANGLE (0.4930, 0.1115) X_504 = 2nd ISOSCELIZER POINT (0.4419, 0.0278) X_503 = 1st ISOSCELIZER POINT (0.5510, 0.1888) X_844 = INTERSECTION OF LINES X(166)X(167) AND X(173)X(503) (0.4606, 0.0024) X_173 = CONGRUENT ISOSCELIZERS POINT (0.5924, 0.2741) A B C X258 X1 X168 X9 X177 X57 X174 X180 X483 X164 X504 X503 X844 X173 (a, b, c) = (5, 6, 7) | AB = 1

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

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


        def construct_x_00173(
            model: Model, A: spg.Point, B: spg.Point, C: spg.Point
        ) -> spg.Point:
            """Construct X_173 = CONGRUENT ISOSCELIZERS POINT on reference triangle ABC."""
            X_173 = eval_trilinear_point(model, A, B, C, 'cos(B/2) + cos(C/2) - cos(A/2)', ID="X_173", classes=["selected", "target"])
            X_1 = incenter_of(model, A, B, C, ID="X_1", classes=["center", "incident"])
            X_168 = eval_trilinear_point(model, A, B, C, 'sin(A) - sin(B) - sin(C) + 2*(cos(A/2) + sin(B/2 - A/2) + sin(C/2 - A/2))', ID="X_168", classes=["center", "incident"])
            central_line(model, X_1, X_168, 1, 168, incident=True)
            X_9 = mittenpunkt_of(model, A, B, C, ID="X_9", classes=["center", "incident"])
            X_177 = eval_trilinear_point(model, A, B, C, '(cos(B/2) + cos(C/2))*sec(A/2)', ID="X_177", classes=["center", "incident"])
            central_line(model, X_9, X_177, 9, 177, incident=True)
            X_57 = eval_trilinear_point(model, A, B, C, '1/(b + c - a)', ID="X_57", classes=["center", "incident"])
            X_174 = eval_trilinear_point(model, A, B, C, 'sec(A/2)', ID="X_174", classes=["center", "incident"])
            central_line(model, X_57, X_174, 57, 174, incident=True)
            return promote_point_to_top(model, X_173)


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