本节书摘来自异步社区《MATLAB图像处理375例》一书中的第2章,第2.2节,作者:MATLAB技术联盟著,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.2 三维绘图
MATLAB图像处理375例
在MATLAB中,三维绘图的基本流程包括以下9个步骤。
(1)数据准备。
(2)图形窗口和绘图区选择。
(3)绘图。
(4)设置视角。
(5)设置颜色表。
(6)设置光照效果。
(7)设置坐标轴刻度和比例。
(8)标注图形。
(9)保存、打印或导出。
下面我们将根据绘制三维图形的基本流程,分别介绍创建图形的各种函数。
2.2.1 三维折线及曲线的绘制
在MATLAB中,plot3命令的功能及使用方法与plot命令的功能及使用方法类似,区别在于前者绘制出的是三维图形。该函数的调用方法如下。
plot3(x,y,z)
plot3(x,y,z,option)
其中,选项参数option指明了所绘图中线条的线性、颜色以及各个数据点的表示记号。plot3命令使用的是以逐点连线的方法来绘制三维折线的,当各个数据点的间距较小时,我们也可利用它来绘制三维曲线。
【例2-34】利用plot3函数绘制一条三维螺旋线。
t=0:pi/50:8*pi;
x=sin(t);
y=cos(t);
z=t;
plot3(x,y,z)
运行结果如图2-35所示。
2.2.2 三维图形坐标标记的函数
MATLAB也提供了3条用于三维图形坐标标记的函数,并提供了用于图形标题说明的语句。这些函数的调用方法如下。
(1)xlabel(str):将字符串str水平放置于x轴。
(2)ylabel(str):将字符串str水平放置于y轴。
(3)zlabel(str):将字符串str水平放置于z轴。
(4)title(str):将字符串str水平放置于图形的顶部。
【例2-35】利用函数为x=_sin(_t)、y=cos(t)的三维螺旋线图形添加标题说明。
t=0:pi/50:8*pi;
x=sin(t);
y=cos(t);
z=t;
plot3(x,y,z);
xlabel('sin(t) ');
ylabel('cos(t) ');
zlabel('t');
title('三维螺旋线');
运行结果如图2-36所示。
2.2.3 三维网格曲面的绘制
三维网格曲面是由一些四边形相互连接在一起所构成的一种曲面,这些四边形的4条边所围成的颜色与图形窗口的背景色相同,并且无色调的变化,呈现的是一种线架图的形式。在MATLAB中,mesh函数用于绘制三维网格曲面图;hidden函数用于隐藏线的显示和关闭。这些函数的调用方法如下。
mesh(X,Y,Z,C)
mesh(X,Y,Z)
mesh(x,y,Z,C)
mesh(x,y,Z)
mesh(Z,C)
mesh(Z)
其中,在命令格式mesh(X,Y,Z,C )和mesh(X,Y,Z )中,参数X,Y,Z 都为矩阵值,并且X 矩阵的每一个行向量都是相同的,Y 矩阵的每一个列向量也都是相同的。参数C 表示网格曲面的颜色分布情况,若省略该参数则表示网格曲面的颜色分布与Z 方向上的高度值成正比;在命令格式(x,y,Z,C )和mesh(x,y,Z )中,参数x 和y 为长度分别是n 和m 的向量值,而参数Z 是维数为m×n 的矩阵;在命令格式[Z,C]和mesh(Z)中,若参数Z是维数为m×n的矩阵,则绘图时的栅格数据点的取法是x=1﹕n和y=1﹕m。
hidden on
表示去掉网格曲面的隐藏线;
【例2-36】在笛卡儿坐标系中绘制函数的网格曲面图。
x=-7:0.5:7;
y=x;
[X,Y]=meshgrid(x,y);
Q=sqrt(X.^2+Y.^2)+eps;
Z=cos(Q)./Q;
mesh(X,Y,Z)
grid on
axis([-10 10 -10 10 -1 1 ])
运行结果如图2-37所示。
MATLAB中还有两个mesh的派生函数:meshc函数用于在绘图的同时,在x-y平面上绘制函数的等值线;meshz函数则用于在网格图基础上在图形的底部外侧绘制平行z轴的边框线。
【例2-37】利用meshc和meshz绘制三维网格图。
close all
clear
[X,Y] = meshgrid(-2:.4:2);
Z = 2*X.^2-3*Y.^2;
subplot(2,2,1)
plot3(X,Y,Z)
subplot(2,2,2)
mesh(X,Y,Z)
subplot(2,2,3)
m