Significance Arithmetic

H[{a_, b_}] := 
        9 {{b^2 - a^2, -2 a b}, {-2 a b, 
              a^2 - b^2}};

p = N[{1/2, 1/10}];

v = {1, 0};

tRem = 22;

answer16 = 
        Reap[While[tRem > 0, m = Round[p + 2 v/3]; 
            s = Min[Cases[
                  t /. Solve[(p + t v - m) . (p + t v - m) == 
                        1/9, t], _?Positive]]; 
            If[s < tRem, p += s v; Sow[p]; v = H[p - m] . v, 
              s = Min[tRem, 2/3]; p += s v; Sow[p]]; 
            tRem -= s]];

Norm[p] // FullForm

p = N[{1/2, 1/10}, 120];

v = {1, 0};

tRem = 22;

answer120 = 
        Reap[While[tRem > 0, m = Round[p + 2 v/3]; 
            s = Min[Cases[
                  t /. Solve[(p + t v - m) . (p + t v - m) == 
                        1/9, t], _?Positive]]; 
            If[s < tRem, p += s v; Sow[p]; v = H[p - m] . v, 
              s = Min[tRem, 2/3]; p += s v; Sow[p]]; 
            tRem -= s]];

myCylinder[p1_, p2_, r_] := 
      Module[{gc, len, v, n1, n2, n1y, n1z, n2x, n2y, 
          n2z},  (*Calculate Normals*) len = 
          Norm[p2 - p1]; 
v = 
          N[(p2 - p1)/len]; 
If[
          MatchQ[v, {x_, 0. , 
              0. }], {n1, n2} = {{0, 1, 0}, {0, 0, 1}};, {n1, 
              n2} = {{0, n1y, n1z}, {n2x, n2y, n2z}}; 
n1 = 
            n1 /. First[
                Solve[{n1 . v == 0, n1 . n1 == v . v}, {n1y, 
                    n1z}]]; 
n2 = 
            n2 /. First[
                Solve[{n2 . v == 0, n2 . n1 == 0, 
                    n2 . n2 == v . v}, 
                  n2]];]; 
 (*Create Cylinder*) {ParametricPlot3D[(h v + r Sin[t] n1 + 
                    r Cos[t] n2) + (p1 + (p2 - p1)/
                      2), {h, -len/2, len/2}, {t, 0, 2 π}, 
              PlotPoints -> 15, 
              DisplayFunction -> 
                Identity][[1]], ParametricPlot3D[
              p1 + (-p1 + p2)/2 - len v/2 + n2 rad Cos[t] + 
                n1 rad Sin[t], {rad, 0, r}, {t, 0, 2 π}, 
              PlotPoints -> 15, 
              DisplayFunction -> 
                Identity][[1]], ParametricPlot3D[
              p1 + (-p1 + p2)/2 + len v/2 + n2 rad Cos[t] + 
                n1 rad Sin[t], {rad, 0, r}, {t, 0, 2 π}, 
              PlotPoints -> 15, 
              DisplayFunction -> Identity][[1]]}]

mirrors = 
        Show[Graphics3D[{SurfaceColor[RGBColor[ .6,  .6,  .7], White, 128], 
              EdgeForm[], 
              Table[myCylinder[{x, - .3, z}, {x,  .3, z}, 
                  1/3], {x, -1, 3}, {z, -2, 2}]}]];

Norm[p] // FullForm

flis16 = Interpolation[#, InterpolationOrder -> 1] & /@ 
          Transpose[
            answer16[[2, 1]] /. {x_, y_} -> {x, - .2, 
                  y}];

flis120 = Interpolation[#, InterpolationOrder -> 1] & /@ 
          Transpose[
            answer120[[2, 1]] /. {x_, y_} -> {x,  .2, 
                  y}];

myblend[clrlst_, t_] := 
      Module[{myfit, var}, 
        myfit = (c + d var) /. 
            FindFit[{{0, 1}, {1, Length[clrlst]}}, c + d var, {c, d}, var]; 
        Through[MapIndexed[
              Interpolation[#, InterpolationOrder -> 1] &, 
              Transpose[clrlst]][myfit /. var -> t]]]

taillength = 2;

delta =  .1;

frames = 
        Table[Show[mirrors, 
            Graphics3D[{x = 0; 
                Table[{x++; Thickness[ .01 (x/15)], 
                    Apply[RGBColor, 
                      myblend[Reverse[{{ .75,  .75,  .75}, {0, 0, 0}}], 
                        Clip[x/(((t - delta) - (t - 
                                        taillength))/delta)]]], 
                    Line[{Through[flis16[t]], 
                        Through[flis16[t + delta]]}]}, {t, 
                    Max[time - taillength, 1], time - delta, delta}], x = 0; 
                Table[{x++; Thickness[ .01 (x/15)], 
                    Apply[RGBColor, 
                      myblend[
                        Reverse[{{1, 1, 1}, {1, 1, 0}, {1,  .5, 0}, {0, 0, 
                              0}}], Clip[
                          x/(((t - delta) - (t - taillength))/
                                delta)]]], 
                    Line[{Through[flis120[t]], 
                        Through[flis120[t + delta]]}]}, {t, 
                    Max[time - taillength, 1], time - delta, delta}]}], 
            LightSources -> {{{1, 1, 1}, White}}, 
            Background -> Black, ViewPoint -> {1, -3.4, 0}, 
            Boxed -> False, ImageSize -> 400], {time, 1.1, 
            Length[answer120[[2, 1]]],  .5}];