Droite des douze points et inversion
Author: Patrice Debart

V = (8.068854393144168, -0.629113204461409)
O = (3.8075334512446135, -0.9521361273441831)
c = Circle(O, V)
A = Point(c)
C = Point(c)
B = Point(c)
ABC, AB, BC, AC = Polygon(A, B, C)
h_3 = OrthogonalLine(C, Line[A, B])
h_2 = OrthogonalLine(B, Line[A, C])
dBC = Line(C, B)
B_1 = Intersect(h_2, Line[A, C])
C_1 = Intersect(Line[A, B], h_3)
h = Line(B_1, C_1)
h_1 = OrthogonalLine(A, Line[B, C])
A_2 = Intersect(c, h_1, 2.0)
B_2 = Intersect(c, h_2, 2.0)
C_2 = Intersect(c, h_3, 2.0)
H = Intersect(h_1, h_2)
A' = Midpoint(B, C)
B' = Midpoint(A, C)
C' = Midpoint(A, B)
Ω = Midpoint(O, H)
c' = Circle(Ω, B')
q = Line(B_2, A)
A_1 = Intersect(h_1, Line[C, B])
d_1 = Line(A_1, C_1)
e_1 = Line(A_1, B_1)
dAC = Line(C, A)
dAB = Line(B, A)
P = Intersect(dBC, h)
Q = Intersect(d_1, dAC)
R = Intersect(e_1, dAB)
Δ = Line(P, Q)
M = Point(c)
dMH = Line(M, H)
M' = Intersect(c', dMH, 2.0)
MM' = Segment(M, M')
dAM = Line(M, A)
m = Line(M', A_1)
Δ' = Line(O, H)
S = Intersect(dAM, m)
A'' = Midpoint(H, A)
B'' = Midpoint(H, B)
C'' = Midpoint(H, C)
K = Intersect(q, Δ)
q_1 = Line(A_1, B'')