newPursuit[k_, n_, scale_] := Module[{}, folf[l_List, i_] := newptRadiusMid[##, i] & @@@ Partition[l, 3, 1, 2]; midpt[pc_, pd_] := (Tr /@ Thread@{pc, pd})/2; newptRadiusMid[pa_, pc_, pd_, time_] := Module[{pnew, xnew, ynew, pab, radius, pb}, pb = midpt[pc, pd]; incr = 1; dist = EuclideanDistance[pa, pb]; radius = If[dist > incr, incr, dist]; pab = {pb[[1]] - pa[[1]], pb[[2]] - pa[[2]]}; xnew = If[pab[[1]] == 0, pa[[1]], Sign[pab[[1]]] radius/ Sqrt[1 + (pa[[2]] - pb[[2]])^2/(pa[[1]] - pb[[1]])^2] + pa[[1]]]; ynew = If[pab[[1]] == 0, pa[[2]] + Sign[pab[[2]]] radius, pa[[2]] + (xnew - pa[[1]]) #[[2]]/#[[1]] &@pab]; pnew = {xnew, ynew}]; abs[li_, p_] := Module[{a, b, c, d, e, f, g}, a = {Min@#, Max@#} &@li[[p]][[All, 1]]; b = {Min@#, Max@#} &@li[[p]][[All, 2]]; c = Abs[Differences@a]; d = Abs[Differences@b]; e = Max@{c, d}/2; f = 1.1; g = f*e; {{# - g, # + g} &@Mean@a, {# - g, # + g} &@Mean@b}]; newlist = Chop /@ FoldList[folf, scale*N@RandomSample[CirclePoints[k], k], Range@n]; plots = Table[Graphics[{PointSize[ Exp[1/Log[E + k] - 1]/(k/Log[k/2 + E] Log[Log[k + E^E]])], Point /@ newlist[[m]]}, PlotRange -> abs[newlist, m], Frame -> True], {m, 1, n, 1}]; Manipulate[ plots[[m]], {m, 1, n, 1, Appearance -> "Open", AnimationRate -> k}]]; newPursuit[k_, n_] := newPursuit[k, n, k]; newPursuit[k_] := newPursuit[k, k Sqrt[k], k]; (*eg newPursuit[100]*)