X3822

X2099com(3rd EULER TRIANGLE)

Suppose that ABC is an acute triangle. Let LA be the circle that is externally tangent to the nine-point circle and to the sidelines AB and AC. Define LB and LC cyclically. The three circles are here named the Odehnal tritangent circles. Their radical center is X3822. The center of the Apollonian circle of LA, LB, LC is X6167. (Boris Odehnal, “A Triad of Tritangent Circles, Journal for Geometry and Graphics 18 (2014) no. 1, 61-71)
< 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) { 10, 12 }: Central Line L(10, 12) { 2, 36 }: Central Line L(2, 36) { 37, 115 }: Central Line L(37, 115) { 116, 119 }: Central Line L(116, 119) { 5, 515 }: Central Line L(5, 515) { 11, 551 }: Central Line L(11, 551) A = Vertex A (0.0000, 0.0000) B = Vertex B (1.0000, 0.0000) C = Vertex C (0.6122, 0.5999) X_10 = SPIEKER CENTER (0.5204, 0.1833) X_12 = {X(1),X(5)}-HARMONIC CONJUGATE OF X(11) (0.5641, 0.2407) X_2 = CENTROID (0.5374, 0.2000) X_36 = INVERSE-IN-CIRCUMCIRCLE OF INCENTER (1.3333, 1.6330) X_37 = CROSSPOINT OF INCENTER AND CENTROID (0.5567, 0.2158) X_115 = CENTER OF KIEPERT HYPERBOLA (0.7507, 0.0838) X_116 = MIDPOINT OF X(4) AND X(103) (0.6990, 0.0375) X_119 = FEUERBACH ANTIPODE (0.3776, 0.4312) X_5 = NINE-POINT CENTER (0.5561, 0.2489) X_515 = ISOGONAL CONJUGATE OF X(102) (0.6804, 0.7691) X_11 = FEUERBACH POINT (0.7347, 0.0667) X_551 = MIDPOINT OF X(1) AND X(2) (0.5544, 0.2166) X_3822 = com(3rd EULER TRIANGLE) (0.5491, 0.2210) A B C X10 X12 X2 X36 X37 X115 X116 X119 X5 X515 X11 X551 X3822 (a, b, c) = (5, 6, 7) | AB = 1

X3822 (X2099com(3rd EULER TRIANGLE)) constructed on acute reference triangle \((a, b, c) = (5, 6, 7)\) with unit baseline AB = \(1\).

"""GEOMETOR construction model for X_3822 = X_2099com(3rd EULER TRIANGLE)."""

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


        def construct_x_03822(
            model: Model, A: spg.Point, B: spg.Point, C: spg.Point
        ) -> spg.Point:
            """Construct X_3822 = X_2099com(3rd EULER TRIANGLE) on reference triangle ABC."""
            X_3822 = eval_barycentric_point(model, A, B, C, '(b + c)*(b**(3) + c**(3) - a**(2)*b - a**(2)*c - b**(2)*c - b*c**(2) - a*b*c)', ID="X_3822", classes=["selected", "target"])
            X_10 = spieker_center_of(model, A, B, C, ID="X_10", classes=["center", "incident"])
            X_12 = eval_trilinear_point(model, A, B, C, '1 + cos(B - C)', ID="X_12", classes=["center", "incident"])
            central_line(model, X_10, X_12, 10, 12, incident=True)
            X_2 = centroid_of(model, A, B, C, ID="X_2", classes=["center", "incident"])
            X_36 = eval_trilinear_point(model, A, B, C, '1 - 2*cos(A)', ID="X_36", classes=["center", "incident"])
            central_line(model, X_2, X_36, 2, 36, incident=True)
            X_37 = eval_trilinear_point(model, A, B, C, 'b + c', ID="X_37", classes=["center", "incident"])
            X_115 = eval_trilinear_point(model, A, B, C, 'b*c*(b**(2) - c**(2))**(2)', ID="X_115", classes=["center", "incident"])
            central_line(model, X_37, X_115, 37, 115, incident=True)
            return promote_point_to_top(model, X_3822)


        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_3822 on the given reference triangle."""
            model = create_model('X_3822 = X_2099com(3rd EULER TRIANGLE)')
            A, B, C = construct_baseline_triangle(model, *sides, show_guides=show_guides)
            construct_x_03822(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-03822.json"))
            write_center_svg(
                model_acute,
                here / "x-03822.svg",
                subtitle="(a, b, c) = (5, 6, 7) | AB = 1",
            )