A = (0.22, 4.6)
B = (-1.42, 0.98)
C = (3.18, 0.32)
poly1, c, a, b = Polygon(A, B, C)
d = Circle(A, B, C)
e = LineBisector(A, B)
f = LineBisector(B, C)
g = LineBisector(C, A)
D, E = Intersect(d, f)
F, G1 = Intersect(d, e)
H1, I = Intersect(d, g)
A3 = If(Distance[E, A]  <  Distance[D, A], E, D)
G: (A + B + C) / 3
h = Line(A, B)
i = Line(A, C)
j = Line(B, C)
k = OrthogonalLine(A, j)
l = OrthogonalLine(B, i)
m = OrthogonalLine(C, h)
H = Intersect(l, m)
B3 = If(Distance[H1, B]  <  Distance[I, B], H1, I)
C3 = If(Distance[F, C]  <  Distance[G1, C], F, G1)
O = Intersect(f, g)
α: (arg((A3 - O) / (A - O)) * 2 / 3)
A' = Rotate(A, α, O)
β = Angle(A, O, A')
γ: (arg((B3 - O) / (B - O)) * 2 / 3)
B' = Rotate(B, γ, O)
δ = Angle(B, O, B')
ε: (arg((C3 - O) / (C - O)) * 2 / 3)
C' = Rotate(C, ε, O)
ζ = Angle(C, O, C')
J = Midpoint(A, B)
K = Midpoint(B, C)
L = Midpoint(C, A)
p = Circle(J, K, L)
M = Center(p)
poly2, c', a', b' = Polygon(A', B', C')
n = Line(A', B')
q = Line(B', C')
r = Line(C', A')
s = OrthogonalLine(M, q)
t = OrthogonalLine(M, r)
a_1 = OrthogonalLine(M, n)
b_1 = Line(A', G)
c_1 = Line(B', G)
d_1 = Line(C', G)
N = Intersect(c_1, t)
P = Intersect(s, b_1)
Q = Intersect(d_1, a_1)
P' = Dilate(P, -3, M)
N' = Dilate(N, -3, M)
Q' = Dilate(Q, -3, M)
R = Intersect(j, k)
S = Intersect(m, h)
T = Intersect(i, l)
R' = Mirror(R, K)
T' = Mirror(T, L)
S' = Mirror(S, J)
S'' = Mirror(S', s)
S''_1 = Mirror(S', a_1)
S''_2 = Mirror(S', t)
U = Mirror(S''_1, t)
V = Mirror(S''_2, a_1)
o = ImplicitCurve({P', S', S'', Q, N, P, S''_1, N', U, S''_2, Q', R', V, T'})
W = Intersect(p, k, 2)
Z = Intersect(p, m, 2)
A_1 = Intersect(p, l, 1)
R'_1 = Mirror(R, W)
T'_1 = Mirror(T, A_1)
S'_1 = Mirror(S, Z)
B_1 = Point(d)
e_1 = OrthogonalLine(B_1, h)
f_1 = OrthogonalLine(B_1, i)
g_1 = OrthogonalLine(B_1, j)
C_1 = Intersect(h, e_1)
D_1 = Intersect(i, f_1)
E_1 = Intersect(g_1, j)
h_1 = Line(C_1, E_1)