step 1 cercle O'

step 2 similitude

step 3 tangentes

prop

S = Intersect(xAxis, yAxis)
F = Point(xAxis)
O = Point(xAxis)
ox: y = 0
dir = OrthogonalLine(Mirror[F, S], ox)
p = Parabola(F, dir)
ts = OrthogonalLine(S, ox)
or = Line(O, O + (-1, 1.4))
r = Point(or)
Γ = Circle(O, r)
tr = Tangent(r, Γ)
N = Intersect(ts, tr)
O' = Mirror(O, F)
c_N = Circle(N, r)
hc_{NO'} = Semicircle(N, O')
B = Intersect(hc_{NO'}, c_N)
h = Circle(O', B)
br = Line(B, r)
J = Intersect(ox, br)
tj_{2}, tj_1 = Tangent(J, Γ)
nb = Line(N, B)
B' = Mirror(B, OrthogonalLine[O', br])
r' = Mirror(r, O)
b'r' = Line(r', B')
I = Intersect(b'r', ox)
ti_{1}, ti_{2} = Tangent(I, Γ)
M = Intersect(ts, tj_1)
M_2 = Intersect(ts, b'r')
M_3 = Intersect(ts, ti_{1})
M_4 = Intersect(ts, tj_{2})
T = Intersect(tj_1, OrthogonalLine[Mirror[S, M], ts])
H = Mirror(S, M)
f = OrthogonalLine(H, ts)
T_4 = Intersect(tj_{2}, OrthogonalLine[Mirror[S, M_4], ts])
T_2 = Intersect(ti_{2}, OrthogonalLine[Mirror[S, M_2], ts])
T_3 = Intersect(ti_{1}, OrthogonalLine[Mirror[S, M_3], ts])
MF = Segment(M, F)
A = Intersect(Γ, tj_1)
A' = Mirror(A, M)
O'A' = Segment(A', O')
a = false
b = false
c = false
OA = Segment(A, O)
rr' = Segment(r, r')
O'B' = Segment(B', O')
d = true
hc' = Semicircle(O', N)