- 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 не изменяется. С углами 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) По умолчанию угловой коэффициент выражается в радианах. Втораяя строка 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) |