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: Moderation Team

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

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.
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