MATLAB三维曲面作图(三)特殊效果的绘图(灯光)

首先,我们来绘制一个海螺的复杂图形

close all
t = linspace(0,2*pi,512);
[u v] = meshgrid(t);
a = -0.4;
b = 0.5;
c = 0.1;
n = 3;
x = (a*(1-v/(2*pi)).*(1+cos(u))+c).*cos(n*v);
y = (a*(1-v/(2*pi)).*(1+cos(u))+c).*sin(n*v);
z = b*v/(2*pi)+a*(1-v/(2*pi)).*sin(u);
surf(x,y,z,z)
axis off
axis equal
colormap(hsv(1024))
shading interp
material shiny
%lighting phong
camlight('left','infinite')
view([-160 25])

结果:

这里我们进行了一系列设置:

axis off:将坐标轴关闭,只显示曲面

axis equal:坐标轴的长度相同

shading interp:上一篇文章中已经讲过,这个语句的作用是去除黑色的边界线并将颜色的变化更自然(连续过渡)

material shiny:材料设置为镜面反射

在MATLAB官方网站上有对这个函数的进一步解释:

% material %设置 surface 和 patch 对象的光照特征。
% material shiny %使得对象具有相对于漫反射和环境光更高的镜面反射,镜面反射光的颜色仅取决于光源的颜色。
% material dull %设置反射属性,使得对象反射更多的漫射光并且没有镜面反射光,但反射光的颜色仅取决于光源。
% material metal %设置反射属性,使得对象具有非常高的镜面反射、非常低的环境和漫反射,反射光的颜色同时取决于光源和对象的颜色。
% material([ka kd ks]) %设置对象的环境/漫反射/镜面反射强度。

lighting phong语句表示引入冯氏光照模型

重新绘制图形

%lighting phong

将这个语句注释,可以观察亮点附近的图形:

 出现了明显的波纹,这是因为在不设置光照模型的情况下,默认的光照只是引入了光源,不能根据物体的实际空间形状模拟出光照效果,可以用以下语句进行对比:

sphere
axis equal
lightangle(-45,30)

结果:

引入lighting phong函数:

figure
sphere
axis equal
lightangle(-45,30)
lighting phong

结果:

 

 camlight('left','infinite')语句创造了一个光源:

% camlight('headlight') %在相机位置创建光源。
% camlight('right') %在相机右上方创建光源。
% camlight('left') %在相机左上方创建光源。

参考:

《高等光学仿真——光波导、激光》

MATLAB官网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab练习生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值