x[t_] := Sin[t] + t; y[t_] := Cos[t]; tmin = -5; tmax = 5; n = 41; notzero[x_] := If[x == 0, 0.001, x]; normals = N@Table[{y'[t], -x'[t]}, {t, tmin, tmax, (tmax - tmin)/n}]; ps = N@Table[{x[t], y[t]}, {t, tmin, tmax, (tmax - tmin)/n}]; ts = N@Table[t, {t, tmin, tmax, (tmax - tmin)/n}]; X[t_] := x[t] - y'[t] ( x'[t]^2 + y'[t]^2)/notzero[x'[t] y''[t] - x''[t] y'[t]]; Y[t_] := y[t] + x'[t] ( x'[t]^2 + y'[t]^2)/notzero[x'[t] y''[t] - x''[t] y'[t]]; frame[\[Tau]_] := Show[ Graphics[{ }, PlotRange -> {{-4, 4}, {-4, 2}}, ImageSize -> {300, 300}], Reverse@Table[ ParametricPlot[ ps[[i]] + t normals[[i]]/notzero@Norm[normals[[i]]], {t, -100, 100}, PlotStyle -> If[i == \[Tau] || i == \[Tau] - Length@ts, Directive[Thickness[0.01], RGBColor[0.4, 0.4, 0.9]], Directive[Thick, Opacity[0.4], RGBColor[0.1, 0.1, 0.1]]] ], {i, If[\[Tau] > Length[ts], \[Tau] - Length[ts], 1], If[\[Tau] > Length[ts], Length[ts], \[Tau]]}], ParametricPlot[{{x[t], y[t]}, {X[t], Y[t]}}, {t, tmin, tmax}, PlotStyle -> {Directive[Thick, RGBColor[0.9, 0.2, 0.3]], Directive[Thick, RGBColor[1.0, 0.1, 0.2]]}], Graphics[{PointSize[0.05], RGBColor[0.2, 0.2, 0.6], Point[ps[[Mod[\[Tau], Length@ts, 1]]]], \[Theta] = ts[[Mod[\[Tau], Length@ts, 1]]]; Point[{Sin[\[Theta] + Pi] + \[Theta], Cos[\[Theta] + Pi] - 2}], Thick, Black, Line[{{-4, -1}, {4, -1}}], Circle[{\[Theta], 0}, 1], Table[ Line[{{Sin[\[Theta] + dt], Cos[\[Theta] + dt]} + {\[Theta], 0}, {Sin[\[Theta] + dt + Pi], Cos[\[Theta] + dt + Pi]} + {\[Theta], 0}}] , {dt, 0, Pi, Pi/2}], Line[{{-4, -3}, {4, -3}}], Circle[{\[Theta], -2}, 1], Table[ Line[{{Sin[\[Theta] + dt], Cos[\[Theta] + dt]} + {\[Theta], -2}, {Sin[\[Theta] + dt + Pi], Cos[\[Theta] + dt + Pi]} + {\[Theta], -2}}] , {dt, 0, Pi, Pi/2}] }] ]; Manipulate[frame[\[Tau]], {\[Tau], 1, 2 Length[ts], 1}]