読者です 読者をやめる 読者になる 読者になる

ポジローぽけっと

昨日より今日、今日より明日を信じて、トライトライ

datファイルからアニメーションを作る方法

を先輩に教えてもらった。

  1. C言語のプログラムのメイン関数が引数をとれるようにする(この引数の変化のアニメーションを作るから)。
  2. シェルスクリプトを書く(今回はcsh内容はまだ理解できない、とりあえず下に書く)。
#!/bin/csh -f

@ i = 8900
while ($i <= 11000)
# bcは電卓。下記はエコーして""を投げる。
set a = `echo "$i / 10000" | bc -l`
if($i < 10000) then
set eps = "a0$i.eps"
set dat = "a0$i.dat"
./a.out $a > a0$i.dat
#echo a0$i.dat
else
set eps = "a$i.eps"
set dat = "a$i.dat"
./calcvar $a > var_a$i.dat
#echo a$i.dat
endif
gnuplot << EOF
set terminal postscript eps color enhanced
set output "${eps}"
set title "a=$i"
set xrange [0:10000]
set yrange [0:100]
plot "$dat" title ""
EOF
@ i = $i + 15
end

お作法が厳しいらしい。

  1. シェルスクリプトを実行し、gnuplotでファイルを沢山作らせる。
  2. 「# mogrify -format gif *.eps」でepsファイルをgifファイルに変換する。
  3. ImageMagicのconvertコマンドで
# convert -delay 50 -loop 0 -dispose Previous a*.gif Animation.gif

とする。コマンドの引数の説明

  • delay hogeはアニメーション速度の設定
  • loop hogeは何回ループするか(0は無限ループ)
  • dispose Previousは前の画像を捨てる(なぜか上書きになってしまったので)

var_a*.gif は連番のファイルで作るvarAnimation.gifがアニメーションファイル名

追記:画像が粗くなる問題が解決した。mogrifyを使わず

# convert -delay 50 -loop 0 -dispose Previous -density 400 a*.eps Animation.gif

としたら綺麗なままにできた。