frames = {}; With[{center = 1/π, zoomstep = 1.04, start = 60, size = 504}, Module[{d = 3 zoomstep^start, maxden = 0, rats = {}, outrats, inrats, newrats, den}, Do[ With[{left = center - 2/d, right = center + 2/d, height = 2/d, bottom = -1/40/d}, outrats = Select[Select[rats, 2 Last[#]^2 height <= 1 &], With[{oden = Last[#], pm = Sqrt[height (1 - Last[#]^2 height)]}, left oden - pm < First[#] < right oden + pm] &]; inrats = Select[Select[rats, 2 Last[#]^2 height > 1 &], With[{iden = Last[#], pm = 1/(2 Last[#])}, left iden - pm < First[#] < right iden + pm] &]; For[den = maxden + 1; newrats = {}, den^2 <= d size, den++, newrats = Union[newrats, Map[{#, den} &, Select[Range[Ceiling[left den - 1/(2 den)], Floor[right den + 1/(2 den)]], CoprimeQ[#, den] &]]] ]; rats = Union[outrats, inrats, newrats]; maxden = Max[Map[Last, rats]]; d *= zoomstep; AppendTo[frames, Graphics[ { Line[{{0, 0}, {1, 0}}], Map[With[{r = 1/(2 Last[#]^2)}, Circle[{Divide @@ #, r}, r]] &, rats] }, ImageSize -> size, PlotRange -> {{left, right}, {bottom, height}} ] ] ], 900 ] ] ]