古いアニメを再生するには?

ここではversionの古いMathematicaで作られた古いアニメをversion 12のような新しいMathematicaで再生するためのTIPSをまとめてみます。

DoをManipulateにする

Do[
	enbthe = N[ (y[t] /. ey)[[1]] ];
	enbkaithe= N[(wr/er-1) enbthe];
	Show[waku
		,enban[(wr-er) Cos[enbthe]
				,-(wr-er) Sin[enbthe]
				,er,enbkaithe,-wr,wr,-wr,er
		]
		,DisplayFunction->$DisplayFunction
	]
	,{t,0,jik,dt}
]
以前はDo[]文でShowをさせると、たくさんの画像ファイルが作られて、これを次々に切り替えることによりアニメーションを再生することができました。これは次の様にManipulate[]にすれば再生させることができます。
Manipulate[
	enbthe = N[ (y[t] /. ey)[[1]] ];
	enbkaithe= N[(wr/er-1) enbthe];
	Show[waku
		,enban[(wr-er) Cos[enbthe]
				,-(wr-er) Sin[enbthe]
				,er,enbkaithe,-wr,wr,-wr,er
		]
		,DisplayFunction->$DisplayFunction
	]
	,{t,0,jik,dt}
]
適宜、再生速度をおとしたりしてみましょう。

定義などをManipulateの内側に入れる

次のプログラムではDo[]をManipulate[]にしただけではうまく動きません。
a=0.5;k=1.0;k'=0.5;m=1.0;d=1.0;h=0.1;l=1.0;
T=4Pi/(Sqrt[(k+2k')/m]-Sqrt[k/m]);sep=0.5;

x1[t_]:=a/2(Cos[Sqrt[k/m]t]-Cos[Sqrt[(k+2k')/m]t]);
x2[t_]:=a/2(Cos[Sqrt[k/m]t]+Cos[Sqrt[(k+2k')/m]t]);
Obj1=Cuboid[{x1[t]-d/2-h/2,0-h/2,0-h/2},{x1[t]-d/2+h/2,0+h/2,0+h/2}];
Obj2=Cuboid[{x2[t]+d/2-h/2,0-h/2,0-h/2},{x2[t]+d/2+h/2,0+h/2,0+h/2}];

Do[
   Show[
		Graphics3D[{Obj1,Obj2}],
		
ParametricPlot3D[{u,
                  h/2 Cos[30(l-x1[t])/l u],
                  h/2 Sin[30(l-x1[t])/l u]
                 },
                 {u,-d/2-l,x1[t]-d/2},
                 DisplayFunction->Identity
]

そこで、外で定義しているx1,x2, Obj1, Obj2をManipulate[]の内側に入れてあげます。Manipulateは局所変数を作るので、外部と若干切り離されます。aとかkは参照できるのですが、外部で定義されたx1, x2は参照できなくなります。そこで、内側で定義するようにします。
a=0.5;k=1.0;k'=0.5;m=1.0;d=1.0;h=0.1;l=1.0;
T=4Pi/(Sqrt[(k+2k')/m]-Sqrt[k/m]);sep=0.5;

Manipulate[
x1[t_]:=a/2(Cos[Sqrt[k/m]t]-Cos[Sqrt[(k+2k')/m]t]);
x2[t_]:=a/2(Cos[Sqrt[k/m]t]+Cos[Sqrt[(k+2k')/m]t]);
Obj1=Cuboid[{x1[t]-d/2-h/2,0-h/2,0-h/2},{x1[t]-d/2+h/2,0+h/2,0+h/2}];
Obj2=Cuboid[{x2[t]+d/2-h/2,0-h/2,0-h/2},{x2[t]+d/2+h/2,0+h/2,0+h/2}];
	Show[
		Graphics3D[{Obj1,Obj2}],
		
ParametricPlot3D[{u,
                  h/2 Cos[30(l-x1[t])/l u],
                  h/2 Sin[30(l-x1[t])/l u]
                 },
                 {u,-d/2-l,x1[t]-d/2},
                 DisplayFunction->Identity
]

DoをTableにして、全体をListAnimate[]でくくる

以前は画像を並べていたので、Tableを使ってそれらの画像をリストに入れます。そのリストをアニメーションとして再生するのがListAnimated[]です。この方法だと、局所変数の問題が省けます。
 Do[
	Show[
		Graphics3D[{Obj1,Obj2}],
		
ParametricPlot3D[{u,
ListAnimate[
  Table[
	Show[
		Graphics3D[{Obj1,Obj2}],
		
ParametricPlot3D[{u,

画像リストであるgifsをListAnimate[]でくくる

アニメをPPTに張るのに、gifsという画像リストを作り、これをExport[]する方法を紹介しています。 Mathematica バージョン6以上にお いて、GIFアニメを作る方法
gifs = {};
Do[
 	    AppendTo[gifs,
  		             Graphics[figures
   			                            , options]
  		   ]
 	     , {t, 0, timeend, dt}
 	] 
このときには、できたgifsをListAnimate[]で再生することができます。
gifs = {};
Do[
 	    AppendTo[gifs,
  		             Graphics[figures
   			                            , options]
  		   ]
 	     , {t, 0, timeend, dt}
 	] 

ListAnimate[gifs]

ShowAnimation[]をListAnimate[]にする

以前はShowAnimation[]を使っていましたが、これをListAnimate[]にします。
Needs["Graphics`Animation`"]
ShowAnimation[gifs]
その際にはNeeds[]でパッケージを読む必要がないので、この行は消します。
ListAnimate[gifs]