Osculating
Conceptually fairly simple, though it took a while to find the right number of circles to include without causing unpleasant visual artifacts.
Anyway, the animation shows 100 osculating circles to the curve $r = \cos (3\theta+\pi/2)$ as they traverse along the curve.
As in Bessel and Tangents, I think it's interesting how the form of the curve emerges from a family of approximations even though the curve itself is never explicitly drawn.
Here's the code:
DynamicModule[{r, curvature, parametrizedcurve, n = 100,
cols = RGBColor /@ {"#08D9D6", "#EAEAEA", "#FF2E63", "#252A34"}},
r[?_] := Cos[3 ? + ?/2];
curvature[?_] := (r[?]^2 + 2 r'[?]^2 - r[?] r''[?])/(r[?]^2 + r'[?]^2)^(3/2);
parametrizedcurve[?_] := {r[?] Cos[?], r[?] Sin[?]};
Manipulate[
Graphics[{Thickness[.005], Opacity[.8],
Table[{Blend[Append[cols[[;; 3]], cols[[1]]], Mod[?, ?]/?],
Circle[parametrizedcurve[?] + 1/curvature[?] Normalize[{-#[[2]], #[[1]]}
&[parametrizedcurve'[?]]], 1/curvature[?]]},
{?, t, ? + t, 2 ?/n}]},
ImageSize -> 540, Background -> cols[[-1]],
PlotRange -> {{-3/2, 3/2}, {-9/8, 15/8}}],
{t, 0, 2 ?/n}]
]
And a still with 700 osculating circles which (to my eyes) doesn't work as an animation because of the aforementioned visual artifacts: