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

 

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

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

  • 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=surf 1 (...) — строит поверхность и возвращает дескрипторы поверхности и источников света.

По умолчанию вектор 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.

Рис. 6.29. График поверхности с имитацией ее освещения точечным источником

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

Примечание  

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

 

29.gif

Изображение: