0

Let $\gamma (t)$ be an embedded curved in $\mathbb{R}^3$ and let $T(t),\ N(t)$ and $B(t)$ be its Frenet frame. Let C be a unit circle (or another closed embedded curve in $\mathbb{R}^3$) and fix a point on $C$, say $C(0)$. We glue at every point of $\gamma(t)$ the curve $C$ at point $C(0)$ such that $N(t)$ is tangent to $C$ and $B(t)$ is normal. This will produce a (not necessarily embedded) surface in $\mathbb{R}^3$. Given $\gamma$ and $C$ how do we plot in Mathematica this construction?

More generally, how can we plot this without fixing the point C(0).I.e. given two Jordan curves $\gamma$ and $C$ we declare that the tangent, normal and binormal of $\gamma$ are, respectively, the normal, binormal and tangent of $C$. How do we plot this, given $\gamma$ and $C$?

Thank you.

2 Answers2

3

In the first paragraph of the OP, it says the normal $N(t)$ of $\gamma$ should be tangent to $C$ and in the second, it says the normal should be the binormal. I went with the first one. The OP also asks how to do this without fixing the base point $C(0)$. I don't know what that means. You could have the base point depend on $t$ or $\gamma(t)$ by using $C(u(t))$ instead of $C(0)$ (or cc[c0] in the code below).

The idea is simple enough: A Frenet frame can be viewed as a rotation matrix, so all you need to do is rotate and translate $C$ into place on $\gamma$, using the frames of the two curves.

(* the curve gamma *)
gg[t_] := {5 Cos[t], 5 Sin[t], 3 ArcTan[t]};
gFSF[t_] = Simplify@Last@FrenetSerretSystem[gg[t], t];

(* the curve C *)
Clear[cFSF];
pts = {{0, 0, 1}, {1, -1, 0}, {2, 0, 1}, {3, 2, 0}, {1, 3, -1}, {0, 2,
     0}, {-1, 1, 1}(*,{0,0,1}*)};
cc = BSplineFunction[pts, SplineClosed -> True];
cFSF[t0_?NumericQ] := Append[#, Cross @@ #] &[  (* FrenetSerretSystem sometimes failed *)
    Table[Indexed[Derivative[n][cc][t], k], {n, 2}, {k, 3}] /. 
     t -> t0] // Orthogonalize;
c0 = 0.95;             (* cc[c0] = C(0), base point *)
cFSF0 = cFSF[c0];      (* Frenet frame at base point *)
Show[
 ParametricPlot3D[(cc[t] - cc[c0]), {t, 0, 1}, 
  MeshFunctions -> {#4 &}, Mesh -> {{c0}}, AxesLabel -> {x, y, z}],
 Graphics3D[{Thick,
   MapThread[{#2, Arrow[{0 cc[c0], 0 cc[c0] + #}]} &, {cFSF0, {Blue, 
      Orange, Darker@Green}}]}],
 PlotRange -> All
 ]

Mathematica graphics

Show[
 ParametricPlot3D[gg[t], {t, -2 Pi, 2 Pi}, 
  PlotStyle -> {Thick, Red}],
 ParametricPlot3D[
  gg[t] + Transpose@gFSF[t].RotateRight@cFSF0.(cc[s] - cc[c0]),
  {t, -2 Pi, 2 Pi}, {s, 0, 1}, Mesh -> {40, 0}],
 PlotRange -> 8, ImageSize -> 300, SphericalRegion -> True
 ]

Mathematica graphics

Michael E2
  • 235,386
  • 17
  • 334
  • 747
2

I am not sure I have completely understood but perhaps this is a start:

f[t_] := {Cos[t], Sin[t], t}
{tg, n, b} = FullSimplify[FrenetSerretSystem[f[t], t][[2]]];
su[u_] := {n, b} /. t -> u
pp = ParametricPlot3D[f[t], {t, 0, 2 Pi}];
Manipulate[
 Show[Graphics3D[
   Polygon@Table[
     f[par] + d {Cos[j] + 1, Sin[j]}.su[par], {j, 0, 2 Pi, 0.1}]], pp,
   AspectRatio -> Automatic, 
  PlotRange -> {{-2, 2}, {-2, 2}, {0, 7}}], {par, 0, 2 Pi}, {d, 0.1, 
  1}]

enter image description here

ubpdqn
  • 60,617
  • 3
  • 59
  • 148