cs = First@ Cases[ParametricPlot[ BSplineFunction[{{0., 0.}, {0.25, 0.25}, {0.25, 0.}, {0., 0.25}}, SplineClosed -> True][u] // Evaluate, {u, 0, 1}, MaxRecursion -> 1], Line[l_] :> l, Infinity];∞]; Graphics3D[{EdgeForm[], TubePolygons[path, cs]}, Boxed -> False]
P[a_] := {-a, a, 1/2 a (8 - a)}; path = First@ Cases[ParametricPlot3D[P[a], {a, 0, 8}, MaxRecursion -> 1], Line[l_] :> l, Infinity];∞]; Graphics3D[{EdgeForm[], TubePolygons[path, 5 cs]}, Boxed -> False]
cs = First@Cases[figureEightFirst @ Cases[figureEight, Line[l_] :> l, Infinity];∞]; Clear[t]; r[t_] := P[t] uT[t_] = Simplify[r'[t]/Norm[r'[t]], t \[Element]∈ Reals]; vN[t_] = Simplify[uT'[t]/Norm[uT'[t]], t \[Element]∈ Reals]; vB[t_] = Simplify[Cross[uT[t], vN[t]], t \[Element]∈ Reals]; Show[ ParametricPlot3D[ {P[t]}, {t, 0, 8}, PlotStyle -> {Blue, Thick}], Table[ Graphics3D[{ Translate[ GeometricTransformation[Tube@Line[Map[Append[#, 0] &, 10 cs]], Transpose[{vN[s], vB[s], uT[s]}]], P[s]]}], {s, 0, 8}], PlotRange -> 10 {{-1.1, .2}, {-.2, 1.1}, {-.2, 1.1}}]