代码介绍
三维图像绘制的函数有plot3(),mesh(),surf()
三者功能各不相同,本文使用surf()
绘制三维曲面图像,并且使用Light
进行光照控制。
本文代码使用Matlab2020a版本编写。
代码
%%
clc %清除命令区
clear % 清除变量区
close all % 关闭所有绘图窗口
%% 生成三维绘图数据
% 函数 z=x*exp(-(x^2+y^2))曲面数据
t=-5:0.1:5; % 数据范围
[xx,yy] = meshgrid(t,t); % 生成网格数据
for i=1:length(t)
for j=1:length(t)
zz(i,j) = xx(i,j)*exp(-(xx(i,j)^2+yy(i,j)^2));
end
end
% 函数peak空间曲面数据
[x,y,z] = peaks(50);
% 球体的空间曲面数据
[X,Y,Z] = sphere(40);
%% 绘图
% 绘制函数z=x*exp(-(x^2+y^2))曲面图像
figure
surf(xx,yy,zz)
title("无环境光")
figure
surfl(xx, yy, zz, [-5, -5, 1], [1, 1, 1, 100])
title("surfl绘制黄色环境光,光源位置为[-5, -5, 1]")
% 绘制peak图像
figure
surf(x,y,z)
title("无环境光")
figure
surfl(x, y, z, [-5, -5, 5], [0.55, 0.6, 0.4, 20]) % 光源位置为[-5, -5, 5],环境光系数0.55、 漫反射系数0.6、 镜面反射系数0.4、 镜面反射亮度20
title("surfl绘制黄色环境光,光源位置为[-5, -5, 5]")
figure
surf(x,y,z)
light('Color','w','Style','local','Position',[-5, -5, 5],'Visible','on');
title("light+surf绘制白色近处位置[-5, -5, 5]环境光")
figure
surfl(x,y,z,'light')
title("surfl+light绘制白色环境光")
% 绘制球形图像
figure
surf(X,Y,Z)
title("无环境光")
figure
surfl(X, Y, Z, [-2, -2, 1], [0.7, 0.6, 0.4, 30]) % 光源位置为[-5, -5, 5],环境光系数0.7、 漫反射系数0.6、 镜面反射系数0.4、 镜面反射亮度30
title("surfl绘制黄色环境光,光源位置为[-2, -2, 1]")
figure
surf(X,Y,Z)
l = light('Color','g','Style','local','Position',[-2, -2, 2],'Visible','on');
title("light+surf绘制绿色近处位置[-2, -2, 2]环境光")
figure
surfl(X,Y,Z,'light')
title("surfl+light绘制白色环境光")