Space Curve

451 days ago by ketchers

In this first example we see the plane of motion, the TNB frame, and the circle of curvature associated to the helix

\mathbf r(t)=\cos(t)\mathbf i+\sin(t)\mathbf j+t\mathbf k.

We have

\begin{align*}

\mathbf r'(t)&=-\sin(t)\mathbf i+\cos(t)\mathbf j+\mathbf k\\

\|\mathbf r'(t)\|&=\sqrt{\sin^2(t)+\cos^2(t)+1}=\sqrt{2}\\

\mathbf T(t)&=2^{-1/2}(-\sin(t),\cos(t),1)\\

\mathbf r''(t)&=-\cos(t)\mathbf i-\sin(t)\mathbf j\\

\mathbf r'(t)\times\mathbf r''(t) &= \det\left[\begin{matrix}\mathbf i&\mathbf j&\mathbf k\\-\sin(t)&\cos(t)&1\\-\cos(t)&-\sin(t)&0\end{matrix}\right]=(\sin(t),-\cos(t),1)\\

\|\mathbf r'(t)\times\mathbf r''(t)\|&=\sqrt{2}\\

\mathbf B(t)&=2^{-1/2}(\sin(t),-\cos(t),1)\\

\mathbf N(t) &= \mathbf B(t)\times\mathbf T(t)=\frac{1}{2}\det\left[\begin{matrix}\mathbf i&\mathbf j&\mathbf k\\\sin(t)&-\cos(t)&1\\-\sin(t)&-\cos(t)&1\end{matrix}\right]=(-\cos(t),-\sin(t),0)\\

\kappa(t)&=\frac{\|\mathbf r'(t)\times\mathbf r''(t)\|}{\|\mathbf r'(t)\|^3}=\frac{\sqrt{2}}{(\sqrt{2})^3}=\frac{1}{2}

\end{align*}

So the circle of curvature has radius \frac{1}{\kappa}=2 and is parametrized by

C(t,\theta)=(\mathbf r(t)+2\mathbf N(t))+2\cos(\theta)\mathbf T(t)+2\sin(\theta)\mathbf N(t)\quad\text{ for }0\le\theta\le 2\pi

 

reset() var('t,s,k') @interact def _(b=slider(-pi,pi,pi/12,0)): r=vector([cos(t),sin(t),t]) T=(2^(-1/2))*vector([-sin(t),cos(t),1]) N=vector([-cos(t),-sin(t),0]) B=(2^(-1/2))*vector([sin(t),-cos(t),1]) P=parametric_plot3d(r,(t,-pi,pi)) P+=arrow3d(r(t=b),r(t=b)+T(t=b),color='blue') P+=arrow3d(r(t=b),r(t=b)+N(t=b),color='green') P+=arrow3d(r(t=b),r(t=b)+B(t=b),color='red') P+=polygon3d([r(t=b)+3*(T(t=b)+2*N(t=b)),r(t=b)+3*(T(t=b)-.2*N(t=b)), r(t=b)+3*(-T(t=b)-.2*N(t=b)),r(t=b)+3*(-T(t=b)+2*N(t=b))],color=(.6,.6,.6),opacity=.4) P+=parametric_plot3d(r(t=b)+2*N(t=b)+2*cos(s)*T(t=b)*k+2*sin(s)*N(t=b)*k, (k,0,1),(s,-pi,pi),color=(.3,.3,.3),opacity=.5,fill=True) show(P,aspect_ratio=[1,1,1]) 
       

Click to the left again to hide and once more to show the dynamic interactive window

Now suppose you are moving around on the curve described above an observing an object moving along the curve (parametrized in terms of the same variable t) given by

\mathbf s(t)=2\cos(3t)\mathbf i+3\sin(2t)\mathbf j+cos(2t)\mathbf k

So from your perspective the object appears like \mathbf s(t)-\mathbf r(t)=(2\cos(3t)-\cos(t))\mathbf i+(3\sin(2t)-\sin(t))\mathbf j+(\cos(2t)-t)\mathbf k which written in terms of the TNB-frame is

l(t)=\bigl((\mathbf s(t)-\mathbf r(t))\bullet \mathbf T(t)\bigr) \mathbf T(t) +\bigl((\mathbf s(t)-\mathbf r(t))\bullet \mathbf N(t)\bigr) \mathbf N(t)+\bigl((\mathbf s(t)-\mathbf r(t))\bullet \mathbf B(t)\bigr) \mathbf B(t)

reset() var('t,s,k') @interact def _(b=slider(-pi,2*pi,pi/12,0)): r=vector([cos(t),sin(t),t]) w=vector([2*cos(3*t),3*sin(2*t),cos(2*t)]) l=w-r T=(2^(-1/2))*vector([-sin(t),cos(t),1]) N=vector([-cos(t),-sin(t),0]) B=(2^(-1/2))*vector([sin(t),-cos(t),1]) p=vector([l.dot_product(T),l.dot_product(N),l.dot_product(B)]) P=parametric_plot3d(r,(t,-pi,2*pi),color='blue',aspect_ration=1) P+=parametric_plot3d(w,(t,-pi,2*pi),color='green',aspect_ratio=1) #P+=parametric_plot3d(p,(t,-pi,b),color='red',aspect_ratio=1) P+=arrow(r(t=b),w(t=b),color='black',width=2) P+=arrow(r(t=b),r(t=b)+T(t=b),color=(.3,.3,1)) P+=arrow(r(t=b),r(t=b)+N(t=b),color=(.3,1,.3)) P+=arrow(r(t=b),r(t=b)+B(t=b),color=(1,.3,.3)) #P+=arrow((0,0,0),p(t=b),color='black',width=2) P+=circle(r(t=b),.05,thickness=3,color='blue') P+=circle(w(t=b),.05,thickness=3,color='green') #P+=circle(p(t=b),.05,thickness=3,color='red') P+=polygon3d([r(t=b)+3*(T(t=b)+N(t=b)),r(t=b)+3*(T(t=b)-N(t=b)), r(t=b)+3*(-T(t=b)-N(t=b)),r(t=b)+3*(-T(t=b)+N(t=b))],color=(.6,.6,.6),opacity=.2) P+=polygon3d([r(t=b)+3*(T(t=b)+B(t=b)),r(t=b)+3*(T(t=b)-B(t=b)), r(t=b)+3*(-T(t=b)-B(t=b)),r(t=b)+3*(-T(t=b)+B(t=b))],color=(.6,.6,.6),opacity=.2) P+=polygon3d([r(t=b)+3*(N(t=b)+B(t=b)),r(t=b)+3*(N(t=b)-B(t=b)), r(t=b)+3*(-N(t=b)-B(t=b)),r(t=b)+3*(-N(t=b)+B(t=b))],color=(.6,.6,.6),opacity=.2) show(P,apect_ratio=[1,1,1],axes_labels=['$x$','$y$','$z$']) 
       

Click to the left again to hide and once more to show the dynamic interactive window

reset() var('t,s,k') @interact def _(b=slider(-pi,2*pi,pi/12,0)): r=vector([cos(t),sin(t),t]) w=vector([2*cos(3*t),3*sin(2*t),cos(2*t)]) l=w-r T=(2^(-1/2))*vector([-sin(t),cos(t),1]) N=vector([-cos(t),-sin(t),0]) B=(2^(-1/2))*vector([sin(t),-cos(t),1]) p=vector([l.dot_product(T),l.dot_product(N),l.dot_product(B)]) #P=parametric_plot3d(r,(t,-pi,2*pi),color='blue',aspect_ration=1) #P+=parametric_plot3d(w,(t,-pi,2*pi),color='green',aspect_ratio=1) P=parametric_plot3d(p,(t,-pi,b),color='red',aspect_ratio=1) #P+=arrow(r(t=b),w(t=b),color='black',width=2) #P+=arrow(r(t=b),r(t=b)+T(t=b),color=(.3,.3,1)) #P+=arrow(r(t=b),r(t=b)+N(t=b),color=(.3,1,.3)) #P+=arrow(r(t=b),r(t=b)+B(t=b),color=(1,.3,.3)) P+=arrow((0,0,0),p(t=b),color='black',width=2) P+=circle(r(t=b),.05,thickness=3,color='blue') P+=circle(w(t=b),.05,thickness=3,color='green') P+=circle(p(t=b),.05,thickness=3,color='red') P+=polygon3d([(-4,-4,0),(-4,4,0),(4,4,0),(4,-4,0)],color='gray',opacity=.2) P+=polygon3d([(-4,0,-4),(-4,0,4),(4,0,4),(4,0,-4)],color='gray',opacity=.2) P+=polygon3d([(0,-4,-4),(0,-4,4),(0,4,4),(0,4,-4)],color='gray',opacity=.2) P+=arrow((0,0,0),(1,0,0),color='blue') P+=arrow((0,0,0),(0,1,0),color='green') P+=arrow((0,0,0),(0,0,1),color='red') show(P,apect_ratio=[1,1,1],axes_labels=['$x$','$y$','$z$']) 
       

Click to the left again to hide and once more to show the dynamic interactive window