アニメをverion6に変換する方法その２

Animate[ ]を使う例

この他に、Do[ ]をAnimate[ ]に変換する方法が考えられる。しかし、Animate[ ]は外部の変数を参照しないようなので、Animate[ ]内に変数を入れないといけない。そうすると、初期化などの問題が生じることがある。

たとえば、次の例ではDo[ ]をAnimate[ ]にして、全体をAnimate[ ]で囲っている。しかし、毎回dotsが初期化されてしまうので、点で示す、軌跡が残らない。

Animate[cycloid[t_] := {t-Sin[t],1-Cos[t]};
baseline = Line[{{-2,0},{10.5,0}}];
pi = N[Pi];
dots = {PointSize[0.006]};

AppendTo[dots, Point[cycloid[t]]];
   Show[Graphics[{{GrayLevel[.5], Disk[{t,1},1]},
          dots, Line[{{t,1}, cycloid[t]}],  (*spoke*)
          baseline},   
     {AspectRatio->3/12,
      PlotRange->{{-1.5,10.5},{-.5,2.5}}}]],
       {t, 0., 59/40 2 pi, 2pi/40}]

プログラムをみてIf[t == 0, dots = {PointSize[0.006]};];と変更すれば軌跡を表示できる。しかし、プログラムを見ないとこのことはわからないので、機械的に変更するのには向いていない。