# [GIF] Grassfire (Parallels of the limaçon trisectrix)

GROUPS:
 Clayton Shonkwiler 4 Votes GrassfireAn interesting thing I noticed while playing around with the grassfire transform, which just pushes a curve off itself to get parallel copies: the limaçon trisectrix is self-parallel, meaning that there is a special distance (namely $\sqrt{\frac{207}{64} + \frac{3 \sqrt{3}}{4}}$) so that if you travel exactly that distance in a direction normal to every point on the limaçon, you get a congruent copy of the limaçon. I did some searching to try to determine who first noticed this, but couldn't find anything. Does anybody have a good reference?Here's the code, where $f$ parametrizes the curve and $g$ gives the normal to the curve: DynamicModule[{f, g, rmax = Sqrt[207/64 + (3 Sqrt[3])/4], n = 400, m = 200, cols = RGBColor /@ {"#4E1184", "#FD367E", "#0E1555"}}, f[t_] := {-(1 - 2 Cos[t]) Sin[t], (1 - 2 Cos[t]) Cos[t]}; g[t_] = {-#[[2]], #[[1]]} &[Normalize[D[f[t], t]]]; Manipulate[ Graphics[ {EdgeForm[Directive[cols[[1]], Thickness[.002]]], FaceForm[None], Table[ {EdgeForm[Directive[Opacity[n/(m*rmax) (s - r) + 1], Blend[cols[[;; 2]], n/(m*rmax) (s - r) + 1]]], Polygon[Table[f[t] + s g[t], {t, 0., 2 π, 2 π/200}]]}, {s, Max[r - m * rmax/n, 0], Min[r, rmax], rmax/n}]}, Axes -> None, ImageSize -> 540, Background -> cols[[-1]], PlotRange -> {{-(3 + rmax)/2, (3 + rmax)/2}, {-3.5, rmax - 1 + 1/2}}], {r, 0., rmax + m*rmax/n}] ] 
 Just as a tiny tip, here's a compact way to express g: g[t_] = Cross[Normalize[f'[t]]]
 Oh wow, I had no idea you could do that with Cross, but I'm certainly very happy to know. Thank you!