И другие программы этой серии
Улучшенные средства визуализации 3D-графики
6.5.1. Построение поверхности с окраской
Особенно наглядное представление о поверхностях дают сетчатые графики, использующие функциональную закраску ячеек. Например, цвет окраски поверхности z(x,y) может быть поставлен в соответствии с высотой z поверхности с выбором для малых высот темных тонов, а для больших – светлых.
Для построения таких поверхностей используются команды класса surf(…):
• surf(X,Y,Z,C) строит цветную параметрическую поверхность по данным матриц X, Y и Z с цветом, задаваемым массивом C;
• surf(X,Y,Z) аналогична предшествующей команде, где C=Z, так что цвет задается высотой той или иной ячейки поверхности;
• surf(x,y,Z) и surf(x,y,Z,C) с двумя векторными аргументами x и y – векторы x и y заменяют два первых матричных аргумента и должны иметь длины length(x)=n и length(y)=m, где [m,n] = size(Z). В этом случае вершины областей поверхности представлены тройками координат (x(j), y(i), Z(i,j)). Заметим, что х соответствует столбцам Z, а у соответствует строкам;
• surf(Z) и surf(Z,C) используют x = 1:n и y = 1:m. В этом случае высота Z – однозначно определенная функция, заданная геометрически прямоугольной сеткой;
• h=surf(…) строит поверхность и возвращает дескриптор объекта класса surface.
Команды axis, caxis, colormap, hold, shading и view задают координатные оси и свойства поверхности, которые могут использоваться для большей эффектности показа поверхности или фигуры.
Ниже приведен простой пример построения поверхности – параболоида:
% Программа построения графика параболоида с окраской
[X,Y]=meshgrid([-3:0.15:3]);
Z=X.^2+Y.^2;
surf(X,Y,Z)
Соответствующий этому примеру график показан на рис. 6.25.
Рис. 6.25. График параболоида с функциональной окраской ячеек
304 Программные средства обычной графики Улучшенные средства визуализации 3D-графики 305
Можно заметить, что благодаря функциональной окраске график поверхности гораздо более выразителен, чем при построениях без такой окраски, представленных ранее (причем даже в том случае, когда цветной график печатается в черно-белом виде).
В следующей программе используется функциональная окраска оттенками серого цвета с выводом шкалы цветовых оттенков:
% Программа построения параболоид
% со шкалой цветовых оттенков [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 обеспечивает устранение изображения сетки и задает интерполяцию для оттенков цвета объемной поверхности.
Начало в части 1