Helix

Author

Eric W. Weisstein
April 23, 2013

This notebook downloaded from http://mathworld.wolfram.com/notebooks/SpaceCurves/Helix.nb.

For more information, see Eric's MathWorld entry http://mathworld.wolfram.com/Helix.html.

©2013 Wolfram Research, Inc. except for portions noted otherwise

Inititalization

Graphic

ParametricPlot3D[{Sin[t],Cos[t],t/3,Red},{t,0,15},Ticks->None]

LiveGraphics3D

<<Utilities`LiveGraphics3D`

WriteLiveForm["helix.m",curve]

Equations

Parametric

curve={r Cos[t],r Sin[t],c t};

Block[{c=1,r=1},ParametricPlot3D[curve,{t,0,10},Evaluated->True]]

Natural

Solve[s==Sqrt[c^2+r^2] t,t]

nat=FullSimplify[{r Cos[t],r Sin[t],c t}/.{t->(s/(Sqrt[(c^2)+(r^2)]))},r>0&&c>0&&s>0]

FullSimplify[Norm[D[nat,s]],r>0&&c>0&&s>0]

Block[{c=1,r=1},ParametricPlot3D[{r Cos[(s/(Sqrt[(c^2)+(r^2)]))],r Sin[(s/(Sqrt[(c^2)+(r^2)]))],((c s)/(Sqrt[(c^2)+(r^2)]))},{s,0,20}]]

Implicit

Eliminate[Thread[{x,y,z}==curve],t]

Block[{r=1,c=1},Show[{
ParametricPlot3D[curve,{t,0,10},Evaluated->True,PlotStyle->Directive[Red,Thickness[.02]]],

ContourPlot3D[(x^2)==(r^2)-(y^2),{x,-1,1},{y,-1,1},{z,0,10},ContourStyle->Opacity[0.5],Mesh->None],

ContourPlot3D[(x/r)==Cos[(z/c)],{x,-1,1},{y,-1,1},{z,0,10},ContourStyle->Opacity[0.5],Mesh->None]
}]]

Properties

parm={r Cos[t],r Sin[t],c t};
assum=r>0&&c>0&&t>0;
xform={Abs[x_]^(n_/;Mod[n,2]==0):>x^n,Sqrt[x_^(n_/;Mod[n,2]==0)]:>Abs[x]^(n/2)};

Arc Length

ArcLength[curve,t]

Binormal Vector

b=FullSimplify[BinormalVector[curve,t],c>0&&r>0&&t>0]

FullSimplify[b.b]

Curvature

FullSimplify[Curvature[curve,t],c>0&&r>0&&t>0]

Normal Vector

n=FullSimplify[NormalVector[curve,t],c>0&&r>0&&t>0]

FullSimplify[Refine[n,r>0&&c>0],c>0&&r>0&&t>0]

FullSimplify[n.n,c>0&&r>0&&t∈Reals]

Tangent Vector

tan=FullSimplify[TangentVector[curve,t],c>0&&r>0&&t>0]

FullSimplify[Refine[tan,r>0&&c>0],c>0&&r>0&&t>0]

FullSimplify[tan.tan,c>0&&r>0&&t∈Reals]

FullSimplify[Refine[tan.tan,r>0&&c>0],c>0&&r>0&&t>0]

Torsion

FullSimplify[Torsion[curve,t],c>0&&r>0&&t>0]

TotalCurvature

FullSimplify[TotalCurvature[curve,t],c>0&&r>0&&t>0]

VectorLength

Assuming[assum,FullSimplify[Norm[parm]/.xform]]

Nested Helices

Code by Ed Pegg Jr. and/or Michael Trott

Here is a parametric equation.

tubecurve[a_,b_,r_, t_, theta_] :=
{a Cos[t] + r (Cos[t] Cos[theta] +  ((b Sin[t] Sin[theta])/(Sqrt[a^2 + b^2]))),
a Sin[t] + r (Sin[t] Cos[theta] -  ((b Cos[t] Sin[theta])/(Sqrt[a^2 + b^2]))),
 b t + ((a r   Sin[theta])/(Sqrt[a^2 + b^2]))}

As written, this can give a tube around a helix.

ParametricPlot3D[tubecurve[3,.7,.5,t,theta],{t,Pi/3,8 Pi},{theta,0,2 Pi}, PlotPoints->50,Compiled->False]

ParametricPlot3D[tubecurve[3,.7,.5,t,6t],{t,Pi/3,8 Pi},PlotPoints->1000,Compiled->False]

From Ed Pegg:

I'm not sure why it doesn't compile.  My goal is to correct this lovely piece of code by M. Trott, so that nested spirals are shown.

h = 30;   (* relative height; doesn't matter, just rescale box *)
ppr = 12;  (* plotpoints azimuthal for each wire *)
ppl = 30; (* plotpoints vertical for each wire *)
ϕ = Pi;

(* rotations and translations *)
R[x_, φ_] := {{Cos[φ], Sin[φ], 0},{-Sin[φ], Cos[φ], 0}, {0, 0, 1}}.x
T[x_, d_] := x + d
𝒹[l_, n_] := l {Cos[n 2Pi/6], Sin[n 2Pi/6], 0}

centralWires[0] = 
ParametricPlot3D[{Cos[φ], Sin[φ], z}, {φ, 0, 2Pi}, {z, 0, h}, PlotPoints -> {ppr,ppl},  DisplayFunction -> Identity];

Do[rotatedWires[0][k] = 
ParametricPlot3D[Evaluate[R[T[{Cos[φ], Sin[φ], z},
𝒹[2, k]], z/h ϕ]],  {φ, 0, 2Pi}, {z, 0, h}, PlotPoints -> {ppr,ppl},
                 DisplayFunction -> Identity], {k, 0, 5}]

centralWires[1] = {centralWires[0], Table[rotatedWires[0][k], {k, 0,
5}]};

g[k_, p:{x_, y_, z_}] := 
R[T[R[p, -z/h ϕ], 𝒹[6, 0]], k/6 2Pi + z/h ϕ]

Do[rotatedWires[1][k] = centralWires[1] /.
                         Polygon[l_] :> Polygon[g[k, #]& /@ l], 
   {k, 0, 5}]

centralWires[2] = {centralWires[1], Table[rotatedWires[1][k], {k, 0,
5}]};

Show[{centralWires[2]}, DisplayFunction -> $DisplayFunction]

VectorLength

Assuming[assum,FullSimplify[Norm[parm]/.xform]]