Torus and M"obius Strip

xone[s_,t_]=(1-t) {s,0}+t {s,s};
yone[s_,t_]=(1-t){s,s}+ t {s,2 Pi};

ParametricPlot[xone[s,t],{s,0,2 Pi},{t,0,1},PlotStyle->Yellow,BoundaryStyle->None, Ticks->None,Frame->None]

ParametricPlot[yone[s,t],{s,0,2 Pi},{t,0,1},PlotStyle->Blue,BoundaryStyle->None, Ticks->None,Frame->None]

torus[tone_,ttwo_]= (2+Cos[ttwo]) {Cos[tone],Sin[tone],0}+ Sin[ttwo] {0,0,1};

xone[s,t]
xone[s,t][[1]]
xone[s,t][[2]]

torus[xone[s,t][[1]],xone[s,t][[2]]]

ParametricPlot3D[torus[tone,ttwo],{tone,0,2 Pi},{ttwo,0,2 Pi},PlotStyle->Green]

ParametricPlot3D[torus[xone[s,t][[1]],xone[s,t][[2]]],{s,0,2 Pi},{t,0,1},PlotStyle->{Yellow,Opacity[0.5],Specularity[0.3]},ViewPoint->{1.3, 0.4, 1.},Boxed->False,Ticks->None,Axes->None]

firsthalf=ParametricPlot3D[torus[xone[s,t][[1]],xone[s,t][[2]]],{s,0,2 Pi},{t,0,1},PlotStyle->{Yellow,Opacity[0.5],Specularity[0.3]},ViewPoint->{1.3, 0.4, 1.},Boxed->False,Ticks->None,Axes->None,Mesh->None]

ParametricPlot3D[torus[yone[s,t][[1]],yone[s,t][[2]]],{s,0,2 Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},ViewPoint->{1.3, 0.4, 1.},Boxed->False,Ticks->None,Axes->None]

secondhalf=ParametricPlot3D[torus[yone[s,t][[1]],yone[s,t][[2]]],{s,0,2 Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},ViewPoint->{1.3, 0.4, 1.},Boxed->False,Ticks->None,Axes->None,Mesh->None]

Show[firsthalf,secondhalf]

Show[firsthalf,secondhalf,ViewPoint->(1.02) {1.3, 0.4, 0.5}]

yonea[s_,t_]=(1-t) {s,s}+t{s, s+Pi};
yoneb[s_,t_]=(1-t) {s,s}+t {s,2 Pi};
yonec[s_,t_]=(1-t) {s,s+Pi}+t {s,2 Pi};

Show[ParametricPlot[yonea[s,t],{s,0,Pi},{t,0,1},PlotStyle->Blue,BoundaryStyle->None, Ticks->None,Frame->None],ParametricPlot[yoneb[s,t],{s,Pi,2 Pi},{t,0,1},PlotStyle->Blue,BoundaryStyle->None, Ticks->None,Frame->None],Graphics[{Thick,Orange,Arrow[{{Pi,2 Pi},{2 Pi,2 Pi}}]}],Graphics[{Thick,Orange,Arrow[{{0,Pi},{0,2 Pi}}]}],ParametricPlot[yonea[Pi,t],{t,0,1},PlotStyle->{Black,Dashed}],PlotStyle->{Black,AbsolutePointSize[6]},PlotRange->All]

Show[ParametricPlot[yonec[s,t],{s,0,Pi},{t,0,1},PlotStyle->Blue,BoundaryStyle->None, Ticks->None,Frame->None],Graphics[{Thick,Orange,Arrow[{{Pi,2 Pi},{2 Pi,2 Pi}}]}],Graphics[{Thick,Orange,Arrow[{{0,Pi},{0,2 Pi}}]}],Graphics[{Thick,Yellow,Arrow[{{0,2 Pi},{Pi,2 Pi}}]}],Graphics[{Thick,Yellow,Arrow[{{0,0},{0, Pi}}]}],PlotRange->All]

gamma[t_]={Cos[t],Sin[t]};

mone[tone_,ttwo_]={(gamma[tone][[1]]+gamma[ttwo][[1]])/2, (gamma[tone][[2]]+gamma[ttwo][[2]])/2,Norm[gamma[ttwo]-gamma[tone]]};

ParametricPlot3D[mone[yonea[s,t][[1]],yonea[s,t][[2]]],{s,0,Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},ViewPoint->{1.3, 0.4, 1.},Boxed->False,Ticks->None,Axes->None]

stripaparta=Show[ParametricPlot3D[mone[yonea[s,t][[1]],yonea[s,t][[2]]],{s,0,Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},ViewPoint->{1.3, 0.4, 1.},Boxed->False,Ticks->None,Axes->None],ParametricPlot3D[mone[yonea[Pi,t][[1]],yonea[Pi,t][[2]]],{t,0,1},PlotStyle->{Black,Dashed}]]

stripapartb=Show[ParametricPlot3D[mone[yoneb[s,t][[1]],yoneb[s,t][[2]]],{s,Pi,2 Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},ViewPoint->{1.3, -0.5, 1.},Boxed->False,Ticks->None,Axes->None],ParametricPlot3D[mone[yonea[Pi,t][[1]],yonea[Pi,t][[2]]],{t,0,1},PlotStyle->{Black,Dashed}]]

Animate[Show[ParametricPlot3D[mone[yoneb[s,t][[1]],yoneb[s,t][[2]]],{s,Pi,2 Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},ViewPoint->{1.3, y, 1.},Boxed->False,Ticks->None,Axes->None],ParametricPlot3D[mone[yonea[Pi,t][[1]],yonea[Pi,t][[2]]],{t,0,1},PlotStyle->{Black,Dashed}]],{y,-0.5,0.4}]

Show[ParametricPlot3D[mone[yonea[s,t][[1]],yonea[s,t][[2]]]+{0,1,0},{s,0,Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},ViewPoint->{1.3, 0.4, 1.},Boxed->False,Ticks->None,Axes->None],ParametricPlot3D[mone[yonea[Pi,t][[1]],yonea[Pi,t][[2]]],{t,0,1},PlotStyle->{Black,Dashed}],ParametricPlot3D[mone[yonea[Pi,t][[1]],yonea[Pi,t][[2]]]+{0,1,0},{t,0,1},PlotStyle->{Black,Dashed}],ParametricPlot3D[mone[yoneb[s,t][[1]],yoneb[s,t][[2]]],{s,Pi,2 Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},Boxed->False,Ticks->None,Axes->None],ParametricPlot3D[mone[yoneb[s,1][[1]],yoneb[s,1][[2]]],{s,Pi,2 Pi},PlotStyle->{Thick,Orange}],PlotRange->All]

Show[stripaparta,stripapartb,ListPointPlot3D[{{0,0,2}},PlotStyle->{AbsolutePointSize[8],Red}]]

Show[ParametricPlot3D[mone[yonea[s,t][[1]],yonea[s,t][[2]]],{s,0,Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},ViewPoint->{1.3, 0.4, 1.},Boxed->False,Ticks->None,Axes->None],ParametricPlot3D[mone[yoneb[s,1][[1]],yoneb[s,1][[2]]],{s,Pi,2 Pi},PlotStyle->{Thick,Orange}],ParametricPlot3D[mone[yonea[Pi,t][[1]],yonea[Pi,t][[2]]],{t,0,1},PlotStyle->{Black,Dashed}]]

ParametricPlot3D[mone[yoneb[s,1][[1]],yoneb[s,1][[2]]],{s,Pi,2 Pi},PlotStyle->{Thick,Orange}]

Show[ParametricPlot3D[mone[yonec[s,t][[1]],yonec[s,t][[2]]],{s,0,Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},ViewPoint->{1.3, 0.4, 0.4},Boxed->False,Ticks->None,Axes->None],ParametricPlot3D[mone[yoneb[s,1][[1]],yoneb[s,1][[2]]],{s,Pi,2 Pi},PlotStyle->{Thick,Orange}],ParametricPlot3D[mone[yonec[s,1][[1]],yonec[s,1][[2]]],{s,0,Pi},PlotStyle->{Thick,Yellow}],Graphics3D[{Black,Thick,Arrow[{{0,0,0},{1,0,0}}]}],Graphics3D[{Black,Thick,Arrow[{{0,0,0},{0,1,0}}]}],Graphics3D[{Black,Thick,Arrow[{{0,0,0},{0,0,2}}]}],PlotRange->All]

ParametricPlot3D[(torus[xone[s,t][[1]],xone[s,t][[2]]]+torus[xone[s,t][[2]],xone[s,t][[1]]])/2,{s,0,2 Pi},{t,0,1},ViewPoint->{1.3, 0.4, 1.},Boxed->False,Ticks->None,Axes->None]

mover[tau_]:=ParametricPlot3D[(1-tau) torus[xone[s,t][[1]],xone[s,t][[2]]]+tau torus[xone[s,t][[2]],xone[s,t][[1]]],{s,0,2 Pi},{t,0,1},ViewPoint->{1.3, 0.4, 1.},Boxed->False,Ticks->None,Axes->None,PlotRange->{{-3,3},{-3,3},{-1,1}}]

mover[0]

Animate[mover[tau],{tau,0,0.5}]

mover[0.1]

mover[0.2]

mover[0.3]

mover[0.4]

dragger[tone_,ttwo_]=mone[tone,ttwo]+{0,0,Cos[tone]};

ParametricPlot3D[dragger[yonea[s,t][[1]],yonea[s,t][[2]]],{s,0,Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},ViewPoint->{1.3, 0.4, 1.},Boxed->False,Ticks->None,Axes->None]

ParametricPlot3D[dragger[yoneb[s,t][[1]],yoneb[s,t][[2]]],{s,Pi,2 Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},ViewPoint->{1.3, -0.5, 1.},Boxed->False,Ticks->None,Axes->None]

Show[ParametricPlot3D[dragger[yonea[s,t][[1]],yonea[s,t][[2]]]+{0,1,0},{s,0,Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},ViewPoint->{1.3, 0.4, 1.},Boxed->False,Ticks->None,Axes->None],ParametricPlot3D[dragger[yoneb[s,t][[1]],yoneb[s,t][[2]]],{s,Pi,2 Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},Boxed->False,Ticks->None,Axes->None]]

ParametricPlot3D[dragger[yonec[s,t][[1]],yonec[s,t][[2]]],{s,0,Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},ViewPoint->(1.2) {1.3, 0.4, 0.4},Boxed->False,Ticks->None,Axes->None]

Show[ParametricPlot3D[dragger[yonea[s,t][[1]],yonea[s,t][[2]]]+{0,1,0},{s,0,Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},ViewPoint->{1.3, 0.4, 1.},Boxed->False,Ticks->None,Axes->None],ParametricPlot3D[dragger[yoneb[s,t][[1]],yoneb[s,t][[2]]],{s,Pi,2 Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},Boxed->False,Ticks->None,Axes->None],ParametricPlot3D[dragger[yonec[s,t][[1]],yonec[s,t][[2]]]+{0,0,2},{s,0,Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},ViewPoint->(1.2) {1.3, 0.4, 0.4},Boxed->False,Ticks->None,Axes->None]]

Show[ParametricPlot3D[dragger[yonea[s,t][[1]],yonea[s,t][[2]]]+{0,1,0},{s,0,Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},ViewPoint->{1.3, 0.4, 1.},Boxed->False,Ticks->None,Axes->None],ParametricPlot3D[dragger[yoneb[s,t][[1]],yoneb[s,t][[2]]],{s,Pi,2 Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},Boxed->False,Ticks->None,Axes->None],ParametricPlot3D[dragger[yonec[s,t][[1]],yonec[s,t][[2]]]+{0,0,2},{s,0,Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},Boxed->False,Ticks->None,Axes->None],Graphics3D[{Thick,Black,Arrow[{{0,0,0},{1,0,0}}]}],Graphics3D[{Thick,Black,Arrow[{{0,0,0},{0,1,0}}]}],Graphics3D[{Thick,Black,Arrow[{{0,0,0},{0,0,2}}]}]]

draggertau[tone_,ttwo_,tau_]=mone[tone,ttwo]+{0,0,tau Cos[tone]};

draggerplots[tau_]:=Show[ParametricPlot3D[draggertau[yonea[s,t][[1]],yonea[s,t][[2]],tau],{s,0,Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},ViewPoint->{1.3, 0.4, 1.},Boxed->False,Ticks->None,Axes->None],ParametricPlot3D[draggertau[yoneb[s,t][[1]],yoneb[s,t][[2]],tau],{s,Pi,2 Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},Boxed->False,Ticks->None,Axes->None],ParametricPlot3D[draggertau[yonec[s,t][[1]],yonec[s,t][[2]],tau],{s,0,Pi},{t,0,1},PlotStyle->{Blue,Opacity[0.5],Specularity[0.3]},Boxed->False,Ticks->None,Axes->None],Graphics3D[{Thick,Black,Arrow[{{0,0,0},{1,0,0}}]}],Graphics3D[{Thick,Black,Arrow[{{0,0,0},{0,1,0}}]}],Graphics3D[{Thick,Black,Arrow[{{0,0,0},{0,0,2}}]}],PlotRange->{{-1,1},{-1,1},{-1,3}}]

Animate[draggerplots[tau],{tau,0,1}]