Иллюстрированный самоучитель по MatLab

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

Пожалуй, наиболее реалистичный вид имеют графики поверхностей, в которых имитируется освещение от точечного источника света, расположенного в заданном месте координатной системы. Графики имитируют оптические эффекты рассеивания, отражения и зеркального отражения света. Для получения таких графиков используется команда surfl:

  • surfl(…) – аналогична команде surf (…), но строит график поверхности с подсветкой от источника света;
  • surfl (Z.S) или surfl(X,Y,Z,S) – строит графики поверхности с подсветкой от источника света, положение которого в системе декартовых координат задается вектором S=[Sx,Sy.Sz], а в системе сферических координат – вектором S=[AZ.EL];
  • surfl (…, 'light') – позволяет при построении задать цвет подсветки с помощью объекта Light;
  • surfl (…, 'cdata') – при построении имитирует эффект отражения;
  • surfl(X,Y,Z,S.K) – задает построение поверхности с параметрами, заданными вектором K=[ka,kd,ks.spread], где ka – коэффициент фоновой подсветки, kd – коэффициент диффузного отражения, ks – коэффициент зеркального отражения и spread – коэффициент глянцевитости;
  • H=surfl (…) – строит поверхность и возвращает дескрипторы поверхности и источников света.

По умолчанию вектор S задает углы азимута и возвышения в 45°. Используя команды cla, hold on, view(AZ,EL), surfl(…) и hold off, можно получить дополнительные возможности управления освещением. Надо полагаться на упорядочение точек в X, Y, и Z матрицах, чтобы определить внутреннюю и внешнюю стороны параметрических поверхностей. Попробуйте транспонировать матрицы и использовать surfHX'.Y',Z'), если вам не понравился результат работы этой команды. Для вычисления векторов нормалей поверхности surf1 требует в качестве аргументов матрицы с размером по крайней мере 3x3.

Ниже представлен пример применения команды surfl:

>> [X.Y]=meshgrid([-3:0.1:3]);
>> Z=sin(X)./(X.^2+Y.^2+0.3);
>> surfl(X,Y,Z)
>> colormap(gray)
>> shading interp
>> colorbar

Построенная в этом примере поверхность представлена на рис. 6.29.

Иллюстрированный самоучитель по MatLab › Обычная графика MATLAB › Построение освещенной поверхности
Рис. 6.29. График поверхности с имитацией ее освещения точечным источником

Сравните этот рисунок с рис. 6.26, на котором та же поверхность построена без имитации ее освещения.

Примечание
Нетрудно заметить определенную логику в названиях графических команд. Имя команды состоит из основного слова и суффикса расширения. Например, все команды построения поверхностей имеют основное слово surf (сокращение от surface – поверхность) и суффиксы: с – для контурных линий поверхности, l – для освещенности и т. д. Это правило облегчает запоминание многочисленных команд графики
.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.