日曜日, 10月 13, 2013

位相進行プロットアニメ : phase marching plot


---------------
潮汐の状況アニメーションや,振動現象のモード表示のために
単振動グラフに現在時刻(現在位相)をプロットするという視覚表示がある.

とくに目新しい話題じゃないけど gnuplot でやってみる.

---------------





---------------
シェルスクリプト+ gnuplot で,こんな感じ.

#!/bin/bash

echo "createPhaseMarchingAnim.sh"

### parameter for plot
Xmin="-0.25*pi"
Xmax="2*pi+0.25*pi"
Ymin="-1.2"
Ymax=" 1.2"

### parameter for sliding point
Xinit=0.0
Xterm=6.28
nDiv=20


##-----
dX=`echo "scale=5; (${Xterm} - ${Xinit}) / ${nDiv}" | bc`
echo "dX:"${dX}

X=0.0


 

for i in `seq -w 1 $((nDiv+1)) ` ; do
    Y=`echo "scale=5; s(${X})" | bc -l`
    echo "i: "${i}" X: "${X}" Y: "${Y}
    echo  ${X}" "${Y}   > "./point.tmp"


    gnuplot << EOF
    set out "output${i}.gif"
    set term gif
    set grid
    set xrange [$Xmin:$Xmax]
    set yrange [$Ymin:$Ymax]
    set title "$TITLE"
    set pointsize 4
    plot sin(x), "point.tmp" w points pointtype 6  title "current point"
EOF

#    plot sin(x), "point.tmp" w points pointtype 6  title "current point"

    X=`echo "scale=5; (${X} + ${dX})" | bc`
done


convert -delay 10 -loop 0 ./output*.gif  animation.gif



---------------

頑張った点:
・bc コマンドの scale オプションを知らなかった.
・gnuplot の pointtype オプションは set term の種別で違うものがでるかも..

---------------

パラメータを変えて,こんな感じにも.



0 件のコメント: