gnuplot / spherical_harmonics / parametric
媒介変数(parametric)表示 gnuplotで3次元関数を表示するには,変数 x,y を使って z=f(x,y)という x = f(u,v) y = g(u,v) z = h(u,v) のように表現する方法があります.関数形f(x,y)が次のような簡単なものなら, gnuplot> f(x,y)=sin(x)*cos(y) gnuplot> splot f(x,y) しかし極座標表示されている関数は,簡単に “z=” の形で表現できないので, パラメータで球面を表現するには,半径 r が一定という条件を変数u,vで 角度u,vと動径rを用いると,x,y,zの座標は次のよう x = r*cos(u)*cos(v) y = r*sin(u)*cos(v) z = r*sin(v) 球面はr=a=一定値なので,上の式の変数rを定数に x = cos(u)*cos(v) y = sin(u)*cos(v) z = sin(v) gnuplotで媒介変数を用いて球面を描くには,次のようにします. gnuplot> set parametric dummy variable is t for curves, u/v for surfaces gnuplot> set angle degree gnuplot> set urange [0:360] gnuplot> set vrange [-90:90] gnuplot> set isosample 72,36 gnuplot> set ticslevel 0 gnuplot> set size 0.7,1.0 gnuplot> a=1 gnuplot> splot a*cos(u)*cos(v),a*sin(u)*cos(v),a*sin(v) 角度の単位はdefaultではradですが,ちょっとメンドクサイのでこれを「度」 表示のメッシュの細かさは, set isosample で調整します.与え 上の式は少々長くて扱いにくいのですが,このような場合には予め関数を gnuplot> fx(u,v)=cos(u)*cos(v) gnuplot> fy(u,v)=sin(u)*cos(v) gnuplot> fz(v)=sin(v) gnuplot> splot a*fx(u,v),a*fy(u,v),a*fz(v) |