![]() | |
![]() |
![]() ![]() ![]() ![]() |
![]() |
gnuplotで3次元関数を表示するには,変数 x,y を使って z=f(x,y)という 形でz座標を表す方法と,媒介変数(3次元の場合はu,v)を用いて, x = f(u,v) y = g(u,v) z = h(u,v) のように表現する方法があります.関数形f(x,y)が次のような簡単なものなら, それを最初に定義しておいて,splotします.
しかし極座標表示されている関数は,簡単に "z=" の形で表現できないので, その場合は媒介変数を用います.例えば,半径1の球面は x^2+y^2+z^2=1 なので, z=sqrt(1-x*x-y*y) もしくは z = -sqrt(1-x*x-y*y)となり,zの正負2つの関数が 必要です.
パラメータで球面を表現するには,半径 r が一定という条件を変数u,vで 表すだけです.uとvを下の図にある角度として,これらを0から360まで変化 させ,その間に動径の長さ r が変化しないようにします. ![]() 角度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を定数に 置き換えるだけです.a=1なら半径1の球面を表現します. x = cos(u)*cos(v) y = sin(u)*cos(v) z = sin(v) |
gnuplotで媒介変数を用いて球面を描くには,次のようにします.
![]() 角度の単位はdefaultではradですが,ちょっとメンドクサイのでこれを「度」 にしておき,変数u,vの範囲を0から360度まで変化させます. set size で縦横の比率を変えていますが,これは表示が球らしく見 えるように適当に与えたもので,意味はありません.これをしないと縦が 潰れた饅頭型になります. 表示のメッシュの細かさは, set isosample で調整します.与え る数字が大きくなると,メッシュは細かくなります.最初の数字はuの数で, 経度に対応する線の数が変わります.2番目はvの数で,緯度の線が変化し ます. 上の式は少々長くて扱いにくいのですが,このような場合には予め関数を 定義しておくと便利です.
|
![]() | |
![]() |
![]() ![]() ![]() ![]() |
![]() |