一、视点处理
MATLAB 提供了 设置视点 的函数 view ,其调用格式 为:view(az,el)其中 az 为 方位角 , el 为 仰角 ,它们均以度为单位。 系统缺省的视点定义为方位角-37.5° , 仰角30° 。
二、色彩处理
1 .颜色的向量表示MATLAB 除用字符表示颜色外,还可以用含有 3 个 元素的向量表示颜色。向量元素在 [0,1] 范围取 值, 3 个元素分别表示 红、 绿、 蓝 3 种颜色的相对 亮度,称为 RGB 三元组。2 .色图色图 (Color map) 是 MATLAB 系统引入的概念。在 MATLAB 中,每个图形窗口只能有一个色图。色图是m × 3 的数值矩阵,它的每一行是 RGB 三元 组。色图矩阵可以人为地生成,也可调用 MATLAB 提供的函数来定义色图矩阵。3 .三维表面图形的着色三维表面图实际上就是在网格图的每一个网格片上 涂上颜色。 surf 函数用 缺省 的着色方式对网格片着色。除此之外,还可以用shading 命令来改变着 色方式。 shading faceted 命令将每个网格片用其高度对应的 颜色进行着色,但网格线仍保留着,其颜色是黑 色。这是系统的缺省着色方式。 shading flat 命令将每个网格片用同一个颜色进行着 色,且网格线也用相应的颜色,从而使得图形表 面显得更加光滑。shading interp命令在网格片内采用颜色插值处理, 得出的表面图显得最光滑。
例
5-23 3
种图形着色方式的效果展示。
程序如下:
[x,y,z]=sphere(20);
colormap(copper);
subplot(1,3,1);
surf(x,y,z);
axis equal
subplot(1,3,2);
surf(x,y,z);shading flat;
axis equal
subplot(1,3,3);
surf(x,y,z);shading interp;
axis equal
运行结果 :
三、光照处理
MATLAB 提供了 灯光 设置的函数,其调用格式为:light ('Color', 选项 1,'Style', 选项 2,'Position', 选项 3)
例
5-24
光照处理后的球面。
程序如下:
[x,y,z]=sphere(20);
subplot(1,2,1);
surf(x,y,z);axis equal;
light('Posi',[0,1,1]);
shading interp;
hold on;
plot3(0,1,1,'p');text(0,1,1,' light');
subplot(1,2,2);
surf(x,y,z);axis equal;
light('Posi',[1,0,1]);
shading interp;
hold on;
plot3(1,0,1,'p');text(1,0,1,' light');
运行结果 :
四、图形的裁剪处理
例
5-25
绘制三维曲面图,并进行插值着色处理,裁
掉图中
x
和
y
都小于
0
部分。
程序如下:
[x,y]=meshgrid(-5:0.1:5);
z=cos(x).*cos(y).*exp(-sqrt(x.^2+y.^2)/4);
surf(x,y,z);shading interp;
pause %程序暂停
i=find(x<=0&y<=0);
z1=z;z1(i)=NaN;
surf(x,y,z1);shading interp;
运行结果 :
为了展示裁剪效果,第一个曲面绘制完成后暂停, 然后显示裁剪后的曲面。
五、图像处理
1 . imread 和 imwrite 函数imread 和 imwrite 函数分别用于将图像文件读入 MATLAB 工作空间,以及将图像数据和色图数据一起写入一定格式的图像文件。MATLAB 支持多 种图像文件格式,如 .bmp 、 .jpg 、 .jpeg 、 .tif 等。2 . image 和 imagesc 函数这两个函数用于图像显示。为了保证图像的显示效 果,一般还应使用 colormap 函数设置图像色图。
例
5-26
有一图像文件
flower.jpg
,在图形窗口显示
该图像。
程序如下:
[x,cmap]=imread('flower.jpg'); %读取图像的数据
阵和色图阵
image(x);colormap(cmap);
axis image off %保持宽高比并取消坐标轴
六、动画制作
MATLAB 提供 getframe 、 moviein 和 movie 函数进行 动画制作。1 . getframe 函数getframe 函数可截取一幅画面信息 ( 称为动画中的一 帧 ) ,一幅画面信息形成一个很大的列向量。显 然,保存 n 幅图面就需一个大矩阵。2 . moviein 函数moviein(n) 函数用来建立一个足够大的 n 列矩阵。该 矩阵用来保存 n 幅画面的数据,以备播放。之所以 要事先建立一个大矩阵,是为了提高程序运行速度。3 . movie 函数movie(m,n) 函数播放由矩阵 m 所定义的画面 n 次,缺 省时播放一次。
例
5-27
绘制了
peaks
函数曲面并且将它绕
z
轴旋转。
程序如下:
[X,Y,Z]=peaks(30);
surf(X,Y,Z)
axis([-3,3,-3,3,-10,10])
axis off;
shading interp;
colormap(hot);
m=moviein(20); %建立一个20列大矩阵
for i=1:20
view(-37.5+24*(i-1),30) %改变视点
m(:,i)=getframe; %将图形保存到m矩阵
end
movie(m,2); %播放画面2次
运行结果 :
结语
拥有梦想只是一种智力
实现梦想才是一种能力
!!!