hexlet
Author: Jacques MAROT

C_2 = (-2.691454421491433, -4.377581984903387, 0)
C_1: (-4, 5, 0)
O: (0, 0, 0)
e = Plane(C_2, O, C_1)
A, r, s, q = Polygon(C_1, O, C_2)
p: (s + r + q) / 2
S_0 = Sphere(O, p)
S_2 = Sphere(C_2, p - s)
S_1 = Sphere(C_1, p - r)
M: ((p * (p - r)) * (p - s) / (p^(2) - (r * s) - (2 * A)))
m: ((p * (p - r)) * (p - s) / (p^(2) - (r * s) + (2 * A)))
a = Plane(C_2, C_1, O)
g = OrthogonalLine(C_2, a)
f = OrthogonalLine(C_1, a)
c = Circle(C_1, p - r + M, f)
d = Circle(C_2, p - s + M, g)
B, C = Intersect(d, c)
s_0 = Sphere(B, M)
h = Circle(C_1, p - r + m, f)
k = Circle(C_2, p - s + m, g)
D, E = Intersect(h, k)
b = Sphere(D, m)
i = Ray(O, B)
j = Ray(O, D)
G = Intersect(i, S_0)
H = Intersect(j, S_0)
I = Midpoint(G, H)
n = Segment(C_2, D)
t = Segment(D, C_1)
f_1 = Segment(C_1, B)
g_1 = Segment(B, C_2)
J = Intersect(f_1, S_1)
K = Intersect(t, S_1)
L = Intersect(n, S_2)
N = Intersect(g_1, S_2)
P = Midpoint(G, H)
l = Line(P, O)
c_1 = Circle(l, G)
Q = Midpoint(N, L)
h_1 = Line(Q, C_2)
d_1 = Circle(h_1, L)
R = Midpoint(K, J)
i_1 = Line(R, C_1)
e_1 = Circle(i_1, K)

Tool: inversion-sphere (command inversion)
centre ouis point de la sphère ; pole ey point invariant de l'inversion
Input: A, C, D, E
Output: b'

b = Sphere(A, C)
c = Segment(D, E)
f = Segment(D, A)
g = Segment(A, C)
b' = Dilate(b, c^(2) / (f^(2) - g^(2)), D)

Tool: plan-médiateur (command planMed)
Plan médiateur de deux points désignés
Input: A, C
Output: a

f = Segment(A, C)
D = Midpoint(f)
a = OrthogonalPlane(D, f)