X970

CENTER OF THE APOLLONIUS CIRCLE

The Apollonius circle is described at X181 as the circle tangent to the three excircles and encompassing them. That X970 is its center was noted on New Year’s Day, 2002, by Paul Yiu. (Hyacinthos #4619-4623)
< 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 { 5, 10 }: Central Line L(5, 10) { 21, 51 }: Central Line L(21, 51) { 40, 43 }: Central Line L(40, 43) { 1, 181 }: Central Line L(1, 181) { 185, 411 }: Central Line L(185, 411) 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_5 = NINE-POINT CENTER (0.5561, 0.2489) X_10 = SPIEKER CENTER (0.5204, 0.1833) X_21 = SCHIFFLER POINT (0.5287, 0.1771) X_51 = CENTROID OF ORTHIC TRIANGLE (0.6093, 0.3186) X_40 = BEVAN POINT (0.4286, -0.0292) X_43 = -CEVA CONJUGATE OF X(1) (0.6358, 0.2963) X_1 = INCENTER (0.5714, 0.2333) X_181 = APOLLONIUS POINT (0.6163, 0.3093) X_185 = NAGEL POINT OF THE ORTHIC TRIANGLE (0.6033, 0.1643) X_411 = EULER X(21)-2nd-SUBSTITUTION POINT (0.4414, -0.0514) X_970 = CENTER OF THE APOLLONIUS CIRCLE (0.2643, -0.2872) A B C X3 X6 X5 X10 X21 X51 X40 X43 X1 X181 X185 X411 X970 (a, b, c) = (5, 6, 7) | AB = 1

X970 (CENTER OF THE APOLLONIUS CIRCLE) constructed on acute reference triangle \((a, b, c) = (5, 6, 7)\) with unit baseline AB = \(1\).

"""GEOMETOR construction model for X_970 = CENTER OF THE APOLLONIUS CIRCLE."""

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


        def construct_x_00970(
            model: Model, A: spg.Point, B: spg.Point, C: spg.Point
        ) -> spg.Point:
            """Construct X_970 = CENTER OF THE APOLLONIUS CIRCLE on reference triangle ABC."""
            X_970 = eval_trilinear_point(model, A, B, C, 'a*(a**(3)*(b + c)**(2) + a*(a*b + a*c - 2*b*c)*(b**(2) + c**(2)) - b*c*(b**(3) + c**(3)) - a*(b**(4) + c**(4)) - (b**(5) + c**(5)))', ID="X_970", 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_5 = nine_point_center_of(model, A, B, C, ID="X_5", classes=["center", "incident"])
            X_10 = spieker_center_of(model, A, B, C, ID="X_10", classes=["center", "incident"])
            central_line(model, X_5, X_10, 5, 10, incident=True)
            X_21 = eval_trilinear_point(model, A, B, C, '1/(cos(B) + cos(C))', ID="X_21", classes=["center", "incident"])
            X_51 = eval_trilinear_point(model, A, B, C, 'a**(2)*cos(B - C)', ID="X_51", classes=["center", "incident"])
            central_line(model, X_21, X_51, 21, 51, incident=True)
            return promote_point_to_top(model, X_970)


        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_970 on the given reference triangle."""
            model = create_model('X_970 = CENTER OF THE APOLLONIUS CIRCLE')
            A, B, C = construct_baseline_triangle(model, *sides, show_guides=show_guides)
            construct_x_00970(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-00970.json"))
            write_center_svg(
                model_acute,
                here / "x-00970.svg",
                subtitle="(a, b, c) = (5, 6, 7) | AB = 1",
            )