GNUPLOT

- not so Frequently Asked Questions -

update 2004/11/16

Параметрическое выражение

Есть 2 способа отображения 3D функции. Первый заключается в использовании переменных x,y , позволяющих выразить значение z (z=f(x,y)). Другой способ состоит в определении 3D функции двумя параметрами u,v:

   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)

HОднако функция определенная в полярных координатах трудно выражается в форме "z=", поэтому необходимо использовать параметрическое представление. Например, единичный радиус сферы имеет вид x^2+y^2+z^2=1, поэтому нужно определить 2 функции (z > 0 и z < 0), а именно z=sqrt(1-x*x-y*y) и z = -sqrt(1-x*x-y*y).

Сфера может быть выражена двумя параметрами u и v, при условии что радиус постоянен. Пусть u и v являются углами, значения которых ихменяются от 0 до 360 при условии, что радиус r не изменяется.

coordinate1

С углами u,v и радиусом r, произвольные координаты x,y,z выражаются следующим образом:

   x = r*cos(u)*cos(v)
   y = r*sin(u)*cos(v)
   z = r*sin(v)

Сфера может быть определена в полярных координатах, при условии что радиус r=a=constant, тогда сферу можно получить, заменив параметр r на постоянное значение a. При a=1, Функция выше, представляет собой сферу единичного радиуса.

   x = cos(u)*cos(v)
   y = sin(u)*cos(v)
   z = sin(v)

Чтобы построить 3D сферу при помощи 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)
sphere

По умолчанию угловой коэффициент выражается в радианах. Втораяя строка set angle degree изменяет единицу угла в градусы. Третья и четвертая строки говорят Gnuplot изменять параметры u,v от 0 до 360 градусов. С помощью команды set size изменили отношение изображения, с тем чтоб сфера имела сферический вид (в противном случае будет форма блина).

Красные шераховатости можно контролировать с помощью set isosample m,n . Чем больше значение, тем мельче сетка. Значение m для параметра u, а n для v.


Функция, используемая выше, может быть в более удобной форме, когда функции задаются следующим образом:

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)
up