给场景添加光照

下面结合一个实例演示如何给场景添加光照。下面用参数函数[大谦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所示。

Document Image Document Image
\[\]

图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所示。

Document Image
\[\]

图3-12 对曲面进行更多设置