Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Glava_2a70_2014.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
4.6 Mб
Скачать

2.12.3. Построение поверхностей.

Помимо этой простейшей команды система MATLAB располагает еще рядом функций, позволяющих добиваться большей реалистичности при визуализации трехмерных графиков. Это, в частности, функции mesh (применяется для построения каркасной поверхности (или иначе проволочного каркаса (wire frame)), который образуется путем соединения точек поверхности с ближайшими соседями отрезками прямых), surf (применяется для построения каркасной поверхности, каждая клетка которой закрашивается определенным цветом, что позволяет значительно улучшить восприятие поверхности) и surfl, порождающие графические объекты типа surface. Каждая такая функция допускает множество разных вариантов вызова, отличающихся наборами входных параметров, и возвращает указатель на созданный объект.

Рассмотрим в качестве важного характерного примера задачу отображения функции при и . Для ее решения воспользуемся последовательно функциями plot3, mesh, surf и surfl (соответствующие результаты представлены на рис. 2.12.2-2.12.5):

>> x=-2:0.1:2;

>> y=-1:0.1:1;

>> [X,Y]=meshgrid(x,y);

>> Z=exp(-X.^2-Y.^2);

>> plot3(X,Y,Z);

>> hmesh=mesh(X,Y,Z)

>> figure

>> mesh(X,Y,Z);

>> figure

>> surf(X,Y,Z);

>> figure

>> surfl(X,Y,Z);

Как видно из текста представленной программы, дескриптор объекта surface, возвращенный функцией mesh, был занесен в переменную hmesh. Для получения информации о типе графического объекта может быть использована команда get:

>> get(hmesh,'Type')

ans =

surface

Поясним, что разные ребра для лучшего восприятия «объемности изображения» автоматически окрашиваются в разные цвета. Эти цвета соответствуют значениям функции (по умолчанию более высоким (большим по величине) значениям функции соответствуют оттенки красного цвета, а более низким (меньшим по величине) – синего). В общем случае действует следующий алгоритм выбора цвета для вершин, ребер и граней поверхности. Все отображаемые элементы упорядочиваются по возрастанию координаты z характерной точки (для вершины – это табличная точка, для ребра – аппликата середины, для грани – аппликата точки пересечения диагоналей). Затем им присваиваются так называемые индексы цвета (одинаковым значениям z присваивается один и тот же индекс) и по этом индексу выбираются компоненты цвета из массива colormap, установленного в данный момент графического окна (объект типа Figure). Если пользователя не уст-

Рис. 2.12.2. Визуализация поверхности с использованием функции plot3.

Рис. 2.12.3. Визуализация поверхности с использованием функции mesh.

Рис. 2.12.4. Визуализация поверхности с использованием функции surf.

Рис. 2.12.5. Визуализация поверхности с использованием функции surfl.

раивает выбор цвета по высоте аппликаты, при создании поверхности можно в список аргументов добавить еще один массив той же размерности, что и X, Y, Z, который сформирует свойства CData и изменит способ окраски элементов поверхности.

При использовании функций mesh, surf и surfl, в отличие от функции plot3, осуществляется удаление невидимых линий поверхности. При необходимости отобразить невидимые ребра (сделать отображаемую поверхность «прозрачной») следует выполнить команду

>> hidden off

Возможно, что при отображении очень простых фигур типа пирамид или параллелепипедов невидимые линии могут оказаться полезными, однако на насыщенном изображении их присутствие лишь затрудняет восприятие. Для выключения режима отображения невидимых ребер (отмены режима «прозрачности) необходимо выполнить команду

>> hidden on

При использовании функции surf линии (ребра между гранями) поверхности отображаются черным цветом, а цвет каждой клетки зависит от значения функции (высоты) в некоторой характерной точке этой клетки.

С помощью команды shading способ закраски может быть изменен. Данная команда допускает использование следующих трех режимов:

flat – отображение линий поверхности (ребер) скрыто;

interp – отображение линий поверхности скрыто (создается видимость сплошной поверхности), цвета между соседними элементами поверхности сглажены;

faceted – возвращение к виду поверхности, заданному по умолчанию.

Таким образом у пользователя имеется возможность отобразить каждый участок поверхности, ограниченный четырьмя точками, своим цветом и отобразить между ними черные ребра (если иное не задано в свойствах объекта при вызове функции surf).

Если к имени функции mesh добавить букву c, то можно построить каркасную поверхность с линиями уровня функции, спроектированными на плоскость . При использовании функции meshc для решения задачи из предыдущего примера будем иметь (рис. 2.12.6):

>> x=-2:0.1:2;

>> y=-1:0.1:1;

>> [X,Y]=meshgrid(x,y);

>> Z=exp(-X.^2-Y.^2);

>> meshc(X,Y,Z);

>> axis square;

Поясним, что команда (функция) axis square, задающая одинаковые размеры вдоль соответствующих осей координат (рис. 2.12.6).

Аналогично, если вместо функции surf применить функцию surfc, то можно построить закрашенную поверхность с линиями уровня, спроектированными на плоскость (рис. 2.12.7).

Рис. 2.12.6. Визуализация поверхности с использованием функции meshc.

Рис. 2.12.7. Визуализация поверхности с использованием функции surf.

>> x=-2:0.1:2;

>> y=-1:0.1:1;

>> [X,Y]=meshgrid(x,y);

>> Z=exp(-X.^2-Y.^2);

>> surfc(X,Y,Z);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]