下面结合一个实例演示如何给场景添加光照。下面用参数函数[大谦MATLAB,dqmatlab点com]
\[x=\operatorname{cos}{(}u)\operatorname{sin}{(}v),y=\operatorname{sin}{(}u)\operatorname{sin}{(}v),z=\operatorname{cos}{(}v)+\operatorname{log}{(}\operatorname{tan}{(}v/2))+0.2u\]
绘制一个曲面。
在命令窗口键入
code.matlab
>> x=@(u,v) cos(u).*sin(v);
>> y=@(u,v) sin(u).*sin(v);
>> z=@(u,v) cos(v)+log(tan(v./2))+0.2.*u;
>> fsurf(x,y,z,[0 12.4 0.1 2],'EdgeColor','none')
生成曲面如图3-10所示。
\[\]
图3-10 函数定义的曲面 图3-11 曲面的光照效果
用平行光照射它,光的方向由矢量[0 1 1]定义
code.matlab
>> light('Position',[0 1 1])
光照效果如图3-11所示。
现在用lightangle命令添加光照,并进行更多设置。
code.matlab
>> view(0,75)
>> lightangle(-45,30)
>> set(gcf,'Renderer','zbuffer')
>> set(findobj(gca,'type','surface'),...
'FaceLighting','phong',...
'AmbientStrength',.3,'DiffuseStrength',.8,...
'SpecularStrength',.9,'SpecularExponent',25,...
'BackFaceLighting','unlit')
效果如图3-12所示。
\[\]
图3-12 对曲面进行更多设置