Построение поверхности с окраской
Особенно наглядное представление о поверхностях дают сетчатые графики, использующие функциональную закраску ячеек. Например, цвет окраски поверхности z(x, у) может быть поставлен в соответствие с высотой z поверхности с выбором для малых высот темных тонов, а для больших – светлых. Для построения таких поверхностей используются команды класса surf (…):
- surf (X, Y, Z. С) – строит цветную параметрическую поверхность по данным матриц X, Y и Z с цветом, задаваемым массивом С;
- surf(X.Y.Z) – аналогична предшествующей команде, где C=Z, так что цвет задается высотой той или иной ячейки поверхности;
- surf(x.y.Z) и surf(x.y.Z.C) с двумя векторными аргументами х и у – векторы х и у заменяют первых два матричных аргумента и должны иметь длины length(x)=n и length(y)=m, где [m.n]=size(Z). В этом случае вершины областей поверхности представлены тройками координат (x(j), yd), Z(1,j)). Заметим, что х соответствует столбцам Z, а у соответствует строкам;
- surf(Z) и surf(Z.C) используют х = 1:n и у = 1:m. В этом случае высота Z – однозначно определенная функция, заданная геометрически прямоугольной сеткой;
- h=surf (…) – строит поверхность и возвращает дескриптор объекта класса surface.
Команды axis, caxis, color-map, hold, shading и view задают координатные оси и свойства поверхности, которые могут использоваться для большей эффектности показа поверхности или фигуры.
Ниже приведен простой пример построения поверхности – параболоида:
>
>
[X.Y]
=
meshgrid([
-
3
:
0.15
:
3
]);
>
>
Z
=
X.
^
2
+
Y.
^
2
;
>
>
Surf(X,Y,Z)
Соответствующий этому примеру график показан на рис. 6.25.
Рис. 6.25. График параболоида с функциональной окраской ячеек
Можно заметить, что благодаря функциональной окраске график поверхности гораздо более выразителен, чем при построениях без такой окраски, представленных ранее (причем даже в том случае, когда цветной график печатается в черно-белом виде).
В следующем примере используется функциональная окраска оттенками серого цвета с выводом шкалы цветовых оттенков:
>
>
[X,Y]
=
meshgrid([
-
3
:
0.1
:
3
]);
>
>
Z
=
sin(X).
/
(X.
^
2
+
Y.
^
2
+
0.3
);
>
>
surf(X.Y.Z)
>
>
colormap(gray)
>
>
shading interp
>
>
colorbar
В этом примере команда colormap(gray) задает окраску тонами серого цвета, а команда shading Interp обеспечивает устранение изображения сетки и задает интерполяцию для оттенков цвета объемной поверхности. На рис. 6.26 показан вид графика, построенного в этом примере.
Рис. 6.26. График поверхности с функциональной окраской серым цветом
Обычно применение интерполяции для окраски придает поверхностям и фигурам более реалистичный вид, но фигуры каркасного вида дают более точные количественные данные о каждой точке.