コードはここに隠してあります

S2range={{-1.2,1.2},{-1.2,1.2},{-1.2,1.2}};

unitS2insert=Graphics3D[{Opacity[.2],Sphere[{0,0,0}]}];

CF[x_]:=Hue[x,.8,.8]

quaternion[t_,x_,y_,z_]:={{t+I z, -y + x I},{x I +y, t- I z}}

imagqtovec[ {{ u_,v_ },{w_,z_}}]:= { Im[w],Re[w],Im[u] }

rotate[q_,{x_,y_,z_}]:= imagqtovec[q. quaternion[0,x,y,z].ConjugateTranspose[q]]//ComplexExpand//TrigReduce

pos[s_,t_]=rotate[ quaternion[Cos[s Pi/4],0,0,Sin[-s Pi/4]],{Cos[s Pi/2],Sin[s Pi/2] Cos[2Pi t],Sin[s Pi/2] Sin[2Pi t]} ];

unitS1insert=ParametricPlot3D[pos[1,t],{t,0,1},PlotRange->S2range];

xaxis[s_,t_]=rotate[quaternion@@ (pos[s,t]~Join~{0}),{1,0,0}]

yaxis[s_,t_]=rotate[quaternion@@ (pos[s,t]~Join~{0}),{0,1,0}]

zaxis[s_,t_]=rotate[quaternion@@ (pos[s,t]~Join~{0}),{0,0,1}]

vm={{1,0,0},{0,0,-1},{0,1,0}};

arm[s0_,t_]=vm.Integrate[xaxis[s,t],{s,0,s0}]

armplot[t_]:=ParametricPlot3D[arm[s,t],{s,0,1},PlotRange->{{-.2,1.2},{-1.2,1.2},{-1.2,1.2}},ColorFunctionScaling-> False,ColorFunction->( CF[#4]&),Axes->False,ImageSize->Large]

eps=.1;

arrowheadsize=.01;

localcoor[s_,t_]:={{Black,Arrowheads[arrowheadsize],Arrow[{arm[s,t],arm[s,t]+eps vm.xaxis[s,t]}]},{Blue,Arrowheads[arrowheadsize],Arrow[{arm[s,t],arm[s,t]+eps vm.yaxis[s,t]}]},{Red,Arrowheads[arrowheadsize],Arrow[{arm[s,t],arm[s,t]+eps vm.zaxis[s,t]}]}}

shift={.5,-.5,-.5};

shifteps=.2;

axes[s_,t_]:=Graphics3D[{{Black,Arrowheads[arrowheadsize],Arrow[{shift,shift+shifteps vm.xaxis[s,t]}]},{Blue,Arrowheads[arrowheadsize],Arrow[{shift,shift+shifteps vm.yaxis[s,t]}]},{Red,Arrowheads[arrowheadsize],Arrow[{shift,shift+shifteps vm.zaxis[s,t]}]}}]

arrows[t_]:=Graphics3D[Table[localcoor[s,t],{s,0,1,.1}]]

wm={{0,0,-1},{0,1,0},{1,0,0}};

path[t_]:=ParametricPlot3D[wm.pos[s,t],{s,0,1},PlotRange->S2range,ColorFunctionScaling-> False,ColorFunction->( CF[#4]&),Axes->False]

t を変えると腕が動きます。s0 で肩から手の平までの一ヶ所指定すると、そこでの局所座標の向きも表示されます。s0 = 1 とすると t=0 から t=1 で二回転すること、s0=0 では全く動かないことなど、確認してください。右は腕の局所座標が回転群の群多様体の中でどこにあるかを図示しています。

Manipulate[{Show[armplot[t],arrows[t],axes[s0,t]],Show[path[t],unitS2insert,unitS1insert]},{{t,1/2},0,1},{{s0,1},0,1},SaveDefinitions->True]