И другие программы этой серии
Графики имитируют оптические эффекты рассеивания, отражения и зеркального отражения света. Для получения таких графиков используется команда 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 матрицах, чтобы определить внутреннюю и внешнюю стороны параметрических поверхностей. Попробуйте транспонировать матрицы и использовать surfl(X\',Y\',Z\'), если вам не понравился результат работы этой команды. Для вычисления векторов нормалей поверхности surfl требует в качестве аргументов матрицы с размером по крайней мере 3×3.
Ниже представлен пример применения команды 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.26, на котором та же поверхность построена без имитации ее освещения.
Примечание
Нетрудно заметить определенную логику в названиях графических команд.
Начало в части 1