HOME > natural science Laboratory > コンピュータ・シミュレーション講座 > TIPS 集

gnuplot でアニメーション
サイクロイド曲線

文責:遠藤 理平 (2010年12月 3日) カテゴリ:TIPS 集(99)

gnuplot はフリーのグラフ描画ツールですが、アニメーションも作ることができます。 ファイル名が連番な jpg ファイルを書き出し、 「TMPGEnc」や「Giam」を用いて結合することでアニメーションを実現します。

今回は、円を回転させたときの円の1点が描く軌跡であるサイクロイド曲線のアニメーションを行います。
■サイクロイド曲線について:Wikkipedia:サイクロイド
■参考図書:gnuplotの精義―フリーの高機能グラフ作成ツールを使いこなす [単行本]

サイクロイド曲線のアニメーション

Giam

Giam →GIFアニメーション

20101203-1.gif

TMPGEnc

TMPGEnc → m1v形式(MPEG1) → YOUTUBE

gnuplot テンプレート

連番 jpg ファイルが生成されるので、フォルダを作っておきます(フォルダ名:「f」)。

set size ratio 0.2
set samples 256
set xrange [0:15]
set yrange [0:3]
set trange [0:5*pi]
set xtics 0, 2, 15
set ytics 0, 1, 3
set nokey
set parametric

set terminal jpeg  enhanced font "Times" 20 size 600, 240
set tics font 'Times,18'

if (exist("n")==0 || n<0) n=0 #変数の初期化
outfile(n) = sprintf("f/%d.jpg",n+1000)  #出力ファイル名
title(n) = sprintf("t = %d",n)  #タイトル名
unset label 
set label title(n)  font 'Times,20'  at 0 , 3.3 
set output outfile(n)

theta = pi/20 * n
fx(t) = t<=theta ? t-sin(t) : 1/0
fy(t) = t<=theta ? 1-cos(t) : 1/0
plot fx(t),fy(t) w l,\
     cos(t)+theta,sin(t)+1 w l ,\
     fx(theta), fy(theta) with points pt 7 lc rgb "blue"

if (n<100)  n=n+1; reread
n = 0


▲このページのトップNPO法人 natural science トップ

▲このページのトップNPO法人 natural science トップ