ベクトル場
Q:ベクトル場を描きたいのですが,どうしたらいいでしょう.
A1:plot で vector スタイルを指定します.
vector を描くには4個のパラメータ
始点(x,y)およびベクトル
の成分(vx,vy)
が必要です.
- スクリプト: Ver4.0の デモスクリプ中に vector.dem があります.
これは長いので,放物
運動の速度ベクトルを軌跡とともに描くスクリプトparabolic.pltを紹介します.
set nokey
vsc=0.3
V0=20; th=pi/3;
V0x=V0*cos(th);
V0y=V0*sin(th);
g=9.8
vx(t)=V0x
vy(t)=V0y-g*t
x(t)=V0x*t
y(t)=V0y*t-0.5*g*t**2
tm=V0y*2/g
set parametric
set trange[0:tm]
set table "parabr.dat"
plot x(t),y(t)
set table "parabv.dat"
plot vx(t), vy(t)
unset table
!paste parabr.dat parabv.dat > parab.dat
set term pngcairo font ",8" size 320,240 transparent
set out 'parabolic.png'
plot "parab.dat" w lines lt 5,\
"" every 10:1 using 1:2:($4*vsc):($5*vsc) w vector lw 2
- 得られた png 画像
A2:Ver. 5以降では,
特別なファイル名 '+'
を用いると,tableを用いた中間データファイルを作成することなく,
ベクトルを定める4つのデータを記述できます.
- スクリプト:放物運動では一定の重力加速度ベクトルが作用します.
デカルト座標系では一定のベクトルですが,それを放物線の接線成分と
法線成分に分解して(すなわち自然座標系を用いて)表示しています.
natural_cord.plt
g = 9.8
v0 = 15
th = 70.0/180*pi
tm = 2*v0*sin(th)/g
set parametric
set trange [0:tm]
rem(x,y) = x - y*int(x/y)
s(x) = abs(rem(x, tm/10.0)) <= 1e-6 ? x: 1/0
set samples 101
x(t) = v0*cos(th)*t
y(t) = v0*sin(th)*t - g*t**2/2
tnf(t) = (v0*sin(th) -g*t)/(v0*cos(th))
si(t) = tnf(t)/sqrt(1+tnf(t)**2)
co(t) = 1/sqrt(1+tnf(t)**2)
at(t) = -g*si(t) # tangential component
an(t) = g*co(t) # normal component
atx(t) = at(t)*co(t)
aty(t) = +at(t)*si(t)
anx(t) = an(t)*si(t)
any(t) = -an(t)*co(t)
set size ratio -1
sc = 0.2
set nokey
set grid
set term pngcairo enh transp font "Times,10" size 400,300
set out "natural_cord.png"
set macros
vec = "w vectors filled head size 0.2,20"
set style line 101 lc rgb "#CC0000"
set style line 102 lc rgb "#009900"
set style line 103 lc rgb "#0000CC"
plot x(t),y(t) lw 1 t "",\
'+' u (x(s($1))):(y(s($1))):(0):(-g*sc) @vec lw 3 dt (1,1,1,1),\
'+' u (x(s($1))):(y(s($1))):(anx($1)*sc):(any($1)*sc) @vec ls 103 lw 3,\
'+' u (x(s($1))):(y(s($1))):(atx($1)*sc):(aty($1)*sc) @vec ls 101 lw 3
- 得られるpngc画像
Q:ベクトル場をカラーマップの上に描きたいのですが,どうしたらいいでしょう.
A:splot で vector スタイルを指定します(Ver.4.1以降).
splot で vector を描くには6個のパラメータ始点(x,y,z)およびベクトルの
成分(vx,vy,vz) が必要です.
- スクリプト: Ver4.0の デモスクリプ中の vector.dem を splot を用いるように書き換えたもの
を示します.