25620-1 (751112), страница 3
Текст из файла (страница 3)
В двух первых формах plot3d применяется для построения обычного графика одной поверхности, в других формах — для построения графика с параметрической формой задания поверхности. В приведенных формах: f, g и h — функции, expri — выражение, отражающее зависимость от х и у, exprf, exprg и exprh — выражения, задающие поверхность параметрически, s, t, а и b — числовые константы действительного типа, end — числовые константы или выражения действительного типа, х, у, s и t — имена независимых переменных и р — параметры-опции. Параметры для функции plot3d задаются аналогично их заданию для функции plot.
13.3.2. Параметры функции plot3d
С помощью параметров р можно в широких пределах управлять видом трехмерных графиков, выводя или убирая линии каркасной сетки, вводя функциональную окраску поверхностей, меняя угол их обзора и параметры освещения, изменяя вид координатных осей и т.д.
Следующие параметры функции plot3d задаются аналогично их заданию для функции plot:
axesfont font color coords font labelfont linestyle numpoints scaling style symbol thickness title titlefont
Однако функция plot3d имеет ряд дополнительных специфических параметров:
| ambientlight=[r,g,o] | Задает интенсивность красного (red), зеленого (green) и синего (blue) цветов в относительных единицах (от 0 до 1). |
| axes=f | Задает вид координатных осей (BOXED, NORMAL, FRAME и NONE, по умолчанию NONE). |
| grid=[m,nl | Задает число линии каркаса поверхности. |
| gridstyle=x | Задает стиль линий каркаса х ( 'rectangular' или 'triangular'). |
| labels=[x,y,z] | Задает надписи по осям (х, у и z — строки, по умолчанию пустые). |
| light=[phi,theta,r,g, b] | Задает углы, под которыми расположен источник освещения поверхности и интенсивности составляющих (г, g и b) цвета. |
| lightmodel=x | Задает режим яркости (соответственно, none", 'lightl', 'light2', 'light3' и 'light4'). |
| orientation=[theta, phi] | Задает углы ориентации поверхности (по умолчанию 45 градусов). |
| projection=r | Задает перспективу при обзоре поверхности (г может быть числом 0 или 1, задающим включение или выключение перспективы, а также одной из строк 'FISHEYE', 'NORMAL', или 'ORTHOGONAL' (это соответствует численному значению г 0, 0.5, или 1, соответственно, причем по умолчанию задано projection = ORTHOGONAL). |
| shading=s | Задает направления, по которым меняется цвет функциональной окраски (значения s могут быть XYZ, XY, Z, ZGREYSCALE, ZHUE, NONE). |
| tickmarks=[l,n,m] | Задает характер маркировки по осям х, у и z (числа 1, п и m имеют значения не менее 1). |
| view=zmin..zmax или Ixmin..xmax,ymin.. ymax,zmin..zmax] | Задает минимальные и максимальные координаты поверхности для ее видимых участков. |
13.3.3. Выбор и пересчет координат ЗО-графиков
Для трехмерных графиков возможно задание 31-го типа координатных систем с помощью параметра соога5=Тип_координатнои_системь1. Поскольку на экране дисплея поверхность отображается только в прямоугольной системе координат и характеризуется координатами х, у и z, то для представления поверхности, заданной в иной системе координат с координатами u, v и w используются известные [46,47] формулы для преобразования (u, v, w) --> (х, у, z). Ниже представлены типы координатных систем для трехмерной графики и соответствующие формулы преобразования:
bipolarcylindrical
х = a*sinh(v)/(cosh(v)-cos(u)) у = a*sin(u)/(cosh(v)-cos(u)) z = w
bispherical
х = sin(u)*cos(w)/d у = sin(u)*sin(w)/d z = sinh(v)/d (где d = cosh(v) - cos(u) )
cardiodal
x = u*v*cos(w)/(lГ2+v»2)-2 у = u*v*sin(w)/(ir2+v"2r2 z = (u"2-v'2)/2/^2+v'2)-2
cardiodcylindrical
x = (u'2-v~2)/2/(u'-2+v~2)'-2 у = u*v/(u'2+v-2)"2 z = w
casscylindrical
x = a*2~(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)-(l/2)+exp(u)*cos(v)+l)-(l/2) y= a*2«(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)"(l/2)-exp(u)*cos(v)-l)"(l/2) z = w
confocalellip
x = ((a~2-u)*{a'2-v)*(a"2-w)/{a'2-b''2)/(a-2-c-2)Y(l/2) у = ((b»2-u)*(b~2-v)*(b"2-w)/(b"2-a»2)/(b»2-c«2))'(l/2) z = ((c''2-u)*(^2-v)*(c''2-w)/(c'2-a'2)/(c^2-\)''2))~(l/2)
confocalparab
x = ((a'2-u)*(si'2-v)*(a'2-w)/{V2-a'2))'(l/2) у = ((b»2-u)*(b»2-v)*(b-2-w)/(b-2-a-2) Г(1/2) z = (a"2+b"2-u-v-w)/2
conical
x = u*v*w/(a*b) у = u/b*((v"2 - h~2)*(b~2-w''2)/(a~2-V2)Y(l/2) z = u/a*((a'2 - v'2)*(a'2 - w~2)/(a-2-b»2))"(l/2)
cylindrical
x = u*cos(y) у = u*sin(y) z = w
ellcylindrical
x = a*cosh(u)*cos(v) у = a*sinh(u)*sin(v) z = w
ellipsoidal
x = u*v*w/a/b у = ((u'^-b^Mv^-b^^b^-w^Aa^-b^^l^/b z = ((u-2-a»2)*(a•2-v«2)*(a»2-w"2)/(a•2-b'2))»(l/2)/a
hypercylindrical
x= ((u"2+v"2Y(l/2)+u)'(l/2) y^u^+v^ni^-iO-O/^) z=w
invcasscylindrical
x = a*2-(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)-(l/2) +
exp(u)*cos(v)+l)'(l/2)/(exp(2*u)+2*exp(u)*cos(v)+l)'(l/2) у = a*2-(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)-(l/2) -
exp(u)*cos(v)-l)»(l/2)/(exp(2*u)+2*exp(u)*cos(v)+l)«(l/2) z = w
invellcylindrical
x = a*cosh(u)*cos(v)/(cosh(ur2-sin(v)"2) у = a*sinh(u)*sin(v)/(cosh(u)"2-sin(v)~2) z = w
invoblspheroidal
x = a*cosh(u)*sin(v)*cos(w)/(cosh(u)"2-cos(v)«2) у = a*cosh(u)*sin(v)*sin(w)/(cosh(u)'2-cos(v)"2) z = a*sinh(u)*cos(v)/(cosh(u)«2-cos(v)'2)
invprospheroidal
x = a*sinh(u)*sin(v)*cos(w)/(cosh(u)'2-sin(v)"2) у = a*sinh(u)*sin(v)*sin(w)/(cosh(u)«2-sin(v)«2) z = a*cosh(Ll)*cos(v)/(cosh(u)»2-s^n(v)•2)
logcoshcylindrical
x = !i/Pi*\n(cosh(uY2-sm(vY2} у = 2*a/Pi*arctan(tanh(u)*tan(v)) z = w
maxwellcylindrical
x = a/Pi*(u+l+exp(u)*cos(v)) у = a/Pi*(v+exp(u)*sin(v)) z = w
oblatespheroidal
x = a*cosh(u)*sin(v)*cos(w) у = a*cosh(u)*sin(v)*sin(w) z = a*sinh(u)*cos(v)
paraboloidal
x = u*v*cos(w) у = u*v*sin(w) z = (u"2 - v'2)/2
paraboloidal2
x = 2*((u-a)*(a-v)*(a-w)/(a-b))-(l/2) у = 2*((u-b)*(b-v)*(b-w)/(a-b))-(l/2) z = u+v+w—a—b
paracylindrical
x = (u'2 - v'2)/2 у = u*v z = w
prolatespheroidal
x = a*sinh(u)*sin(v)*cos(w) y=a*sinh(u)*sin(v)*sin(w) z=a*cosh(u)*cos(v)
rectangular
x = и у = v • z = w
rosecylindrical
x = ((1Г2+у-2)-(1/2)+и)-(1/2)/(1Г2+у-2Г(1/2) у = ((u'2+v'2y(l/2)-uY(l/2)/(u'2+v'2V(\/2) z = w
sixsphere
x= u/(u'2+v'2+w'2) у = v/(u'-2+v'2+v/''2) z = w/(u'2+v'2+w'2)
spherical
x = u*cos(v)*sin(w) у = u*sin(v)*sin(w) z = u*cos(w)
tangentcylindrical
x = u/(ir2+v"2) у = v/(u«2+v»2) z = w
tangentsphere
x = u-costwVdj^+v^) у = u*sin(w)/(ir2+v"2) z = v/(u"2+v~2)
toroidal
x = a*sinh(v)*cos(w)/d у = a*sinh(v)*sin(w)/d z = a*sin(u)/d (где d = cosh(v) - cos(u) )
Эти формулы полезно знать, поскольку в литературе встречаются несколько отличные формулы пересчета.
Вид графиков трехмерных поверхностей очень сильно различается в разных
координатных системах. По умолчанию трехмерные графики строятся в прямоугольной системе координат — rectangular.
13.4. Примеры построения трехмерных поверхностей с помощью функции plot3d
13.4.1. Простейшее построение ЗО-поверхности с разным стилем
На рис. 13.15 показано два примера простейших построений графиков трехмерной поверхности. По умолчанию строится каркасная поверхность с функциональной окраской тонких линий каркаса и удалением невидимых линий. Чтобы график выглядел более четким, построение в первом примере задано линиями черного цвета с помощью параметра color-black.
Рис. 13.15. Примеры простейшего построения трехмерных поверхностей.
Во втором примере та же поверхность построена с параметром style=patch, что приводит к появлению ее функциональной окраски (увы, на рисунках в книге воспринимаемой как окраска оттенками серого цвета). Функциональная окраска делает рисунки более информативными.
Помимо значения path, можно задавать ряд других стилей для построения трехмерных поверхностей: point — точками, contour — контурными линиями, line — линиями, hidden — линиями каркаса с удалением невидимых линий, wireframe — линиями каркаса со всеми видимыми линиями, patchnogrid — с раскраской, но без линий каркаса, patchcontour — раскраска с линиями равного уровня.
Цвет трехмерного графика может задаваться (как и у двумерного) опцией со1ог=с, где с — цвет (оттенки цвета указывались выше). Возможно еще два алгоритма задания цвета:
HUE — алгоритм с заданием цвета в виде color=f(x,y);
RGB — алгоритм с заданием цвета в виде color=[exprr,exprg,exprb], где выражения exprr, exprg и exprb — выражения, задающие относительную значимость (от О до 1) основных цветов (красного — red, зеленого — green и синего — blue).
Удачный выбор углов обзора фигуры и применение функциональной окраски позволяют придать построениям трехмерных фигур весьма эффектный и реалистический вид.
13.4.2. Построение фигур в различных системах координат
Как отмечалось, вид графика трехмерной поверхности существенно зависит от выбора координатной системы. Рис. 13.16 показывает пример построения нелинейного конуса в цилиндрической системе координат. Для задания такой системы координат используется параметр coords=cylindrical.
Рис. 13.16. Нелинейная цилиндрическая поверхность.
При построении этой фигуры также использована цветная функциональная окраска. Кроме того, этот пример иллюстрирует вывод над рисунком титульной надписи.
Приведем еще один пример построения трехмерной поверхности — на этот раз в сферической системе координат (рис. 13.17). Здесь функция задана вообще элементарно просто — в виде числа 1. Но поскольку выбрана сферическая система координат, то строится поверхность шара единичного радиуса.
При этом построении также задана функциональная окраска поверхности и вывод титульной надписи.
О том, насколько необычным может быть график той или иной функции в различных системах координат свидетельствует рис. 13.18. На нем показан график параметрически заданной функции от одной координаты t — sin(t"3), построенный в сферической системе координат.
Кстати, рис. 13.18 иллюстрирует возможность одновременного наблюдения более чем одного окна — в данном случае двух окон. В одном окне задано построение графика, а в другом — построен сам график. При построении графика в отдельном
Рис. 13.17. Построение шарообразной поверхности в сферической системе координат.
Рис. 13.18. График еще одной поверхности в сферической системе координат.
окне появляется панель форматирования графика. С помощью ее довольно наглядных кнопок-пиктограмм можно легко скорректировать вспомогательные параметры графика (окраску, наличие линий каркаса, ориентацию и др.).
13.4.3. Построение графиков параметрически заданных поверхностей
На рис. 13.19 показано построение поверхности при полном ее параметрическом задании. В этом случае поверхность задается тремя формулами, содержащимися в списке.













