Построение освещенной поверхности
Пожалуй, наиболее реалистичный вид имеют графики поверхностей, в которых имитируется освещение от точечного источника света, расположенного в заданном месте координатной системы. Графики имитируют оптические эффекты рассеивания, отражения и зеркального отражения света. Для получения таких графиков используется команда 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.
Рис. 6.29. График поверхности с имитацией ее освещения точечным источником
Сравните этот рисунок с рис. 6.26, на котором та же поверхность построена без имитации ее освещения.
Примечание
Нетрудно заметить определенную логику в названиях графических команд. Имя команды состоит из основного слова и суффикса расширения. Например, все команды построения поверхностей имеют основное слово surf (сокращение от surface – поверхность) и суффиксы: с – для контурных линий поверхности, l – для освещенности и т. д. Это правило облегчает запоминание многочисленных команд графики.