Message Boards Message Boards

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

Parallels of the limaçon trisectrix

Grassfire

An 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}]
 ]
3 Replies

enter image description here - Congratulations! This post is now a Staff Pick as distinguished on your profile! Thank you, keep it coming!

POSTED BY: EDITORIAL BOARD
Posted 7 years ago

Just as a tiny tip, here's a compact way to express g: g[t_] = Cross[Normalize[f'[t]]]

POSTED BY: J. M.

Oh wow, I had no idea you could do that with Cross, but I'm certainly very happy to know. Thank you!

Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract