(*Change the vectors here and the pictures will update*)
v1 = {2,1,-0.1};
v2 = {1,2,0.1};
v3 = Cross[v1,v2];
a1 = {Red,Thickness[0.008],Arrow[{{0,0,0},v1}]};
a2 = {Blue,Thickness[0.008],Arrow[{{0,0,0},v2}]};
a3 = {Green,Thickness[0.008],Arrow[{{0,0,0},v3}]};Show[Graphics3D[{a1,a2,a3,Text["x",{3.1,0,0}],Text["y",{0,3.1,0}],Text["z",{0,0,3.1}]}],Axes->True,AxesOrigin->{0,0,0},PlotRange->{{-3,3},{-3,3},{-3,3}},Boxed->False,PlotLabel->Style["Cross product",FontSize->24],ViewPoint->{2,.4,.8}]

CrossProductFrame[t_]:=(newV2=v2*(1-t)+v1*t;
newV3 = Cross[v1,newV2];
newA2 = {Blue,Thickness[0.008],Arrow[{{0,0,0},newV2}]};
newA3 = {Green,Thickness[0.008],Arrow[{{0,0,0},newV3}]};Show[Graphics3D[{a1,newA2,newA3,Text["x",{3.1,0,0}],Text["y",{0,3.1,0}],Text["z",{0,0,3.1}]}],Axes->True,AxesOrigin->{0,0,0},PlotRange->{{-3,3},{-3,3},{-3,3}},Boxed->False,PlotLabel->Style[StringForm["t=``",t],FontSize->24],ViewPoint->{2,.4,.8}])

Animate[CrossProductFrame[t],{t,0,2,0.04},RefreshRate->30]

CrossProductFrame2[t_]:=(cf1[s_]:={Cos[2 Pi s],0,Sin[2 Pi s]};
cv1 = cf1[t];
ca1 = {Red,Thickness[0.008],Arrow[{{0,0,0},cv1}]};
ca1Trace=ParametricPlot3D[cf1[s],{s,0,t},PlotStyle->{Red}];
cf2[s_] := {0,(1+s)*Cos[2 Pi s],(1+s)*Sin[2 Pi s]};
cv2 = cf2[t];
ca2 = {Blue,Thickness[0.008],Arrow[{{0,0,0},cv2}]};
ca2Trace = ParametricPlot3D[cf2[s],{s,0,t},PlotStyle->{Blue}];
cv3 = Cross[cv1,cv2];
ca3 = {Green,Thickness[0.008],Arrow[{{0,0,0},cv3}]};
Show[Graphics3D[{ca1,ca2,ca3,Text["x",{3.1,0,0}],Text["y",{0,3.1,0}],Text["z",{0,0,3.1}]}],ca1Trace,ca2Trace,Axes->True,AxesLabel->{"x","y","z"},AxesOrigin->{0,0,0},PlotRange->{{-3,3},{-3,3},{-3,3}},Boxed->False,PlotLabel->Style[StringForm["t=``",t],FontSize->24],ViewPoint->{2,.4,.8}])
Animate[CrossProductFrame2[t],{t,.01,1,0.01},RefreshRate->30]

CrossProductFrame3[t_]:=(f[s_]:={2 Cos[2 Pi s],2 Sin[2 Pi s],0};
cv2 = {2,0,0};
ca2 = {Blue,Thickness[0.008],Arrow[{{0,0,0},cv2}]};
cv1 = f[t];
ca1 = {Red,Thickness[0.008],Arrow[{{0,0,0},cv1}]};
cv3 = Cross[cv1,cv2];
ca3 = {Green,Thickness[0.008],Arrow[{{0,0,0},cv3}]};
edge1 = Line[{cv1+cv2,cv2}];
edge2 = Line[{cv1+cv2,cv1}];
parallelogram = {Yellow,Opacity[0.5],Polygon[{{0,0,0},cv2,cv1+cv2,cv1}]};
Show[Graphics3D[{ca1,ca2,ca3,edge1,edge2,parallelogram,Text["x",{4.1,0,0}],Text["y",{0,4.1,0}],Text["z",{0,0,4.1}]}],Axes->True,AxesLabel->{"x","y","z"},AxesOrigin->{0,0,0},PlotRange->{{-4,4},{-4,4},{-4,4}},Boxed->False,PlotLabel->Style[StringForm["t=``",t],FontSize->24],ViewPoint->{2,.4,.8}])
Animate[CrossProductFrame3[t],{t,0,1,0.01},RefreshRate->30]