1.设计目的
利用 MATLAB 绘制三维立体图像,并实现图像的可视化操作
- 设计题目涉及的理论知识
绘制三维立体圆锥,首先要理解matlab中绘制三维曲面的函数,并了解其调用形式,以及各个参数的意义。
(1)绘制圆锥;
z=cplxgrid(50); %在复平面上面得到一个21*41的网格,x,y分别为其实部和虚部
x=real(z);
y=imag(z);
fz=sqrt((x.^2+y.^2)); %圆锥公式,z^2=x^2+y^2来求fz
h = surf(x,y,fz);
xlabel('x轴','FontSize',10); %xlabel是指横坐标
ylabel('y轴','FontSize',10); %ylabel是指纵坐标
zlabel('z轴','FontSize',10);
(2)向前旋转;
z=cplxgrid(50); %在复平面上面得到一个21*41的网格,x,y分别为其实部和虚部
x=real(z);
y=imag(z);
fz=sqrt((x.^2+y.^2)); %圆锥公式,z^2=x^2+y^2来求fz
h = surf(x,y,fz);
xlabel('x轴','FontSize',10); %xlabel是指横坐标
ylabel('y轴','FontSize',10); %ylabel是指纵坐标
zlabel('z轴','FontSize',10); %zlabel是指竖坐标direction = [1 0 0]; %定义图像旋转的轴
rotate(h,direction,90) %调用rotate函数,旋转图像
(3)向后旋转;
z=cplxgrid(50); %在复平面上面得到一个21*41的网格,x,y分别为其实部和虚部
x=real(z);
y=imag(z);
fz=sqrt((x.^2+y.^2)); %圆锥公式,z^2=x^2+y^2来求fz
h = surf(x,y,fz);
xlabel('x轴','FontSize',10); %xlabel是指横坐标
ylabel('y轴','FontSize',10); %ylabel是指纵坐标
zlabel('z轴','FontSize',10); %zlabel是指竖坐标direction = [1 0 0]; %定义图像旋转的轴
rotate(h,direction,-90) %调用rotate函数,旋转图像
(4)向左旋转;
z=cplxgrid(50); %在复平面上面得到一个21*41的网格,x,y分别为其实部和虚部
x=real(z);
y=imag(z);
fz=sqrt((x.^2+y.^2)); %圆锥公式,z^2=x^2+y^2来求fz
h = surf(x,y,fz);
xlabel('x轴','FontSize',10); %xlabel是指横坐标
ylabel('y轴','FontSize',10); %ylabel是指纵坐标
zlabel('z轴','FontSize',10); %zlabel是指竖坐标
direction = [0 1 0]; %定义图像旋转的轴
rotate(h,direction,-90) %调用rotate函数,旋转图像
(5)向左旋转
源代码
z=cplxgrid(50); %在复平面上面得到一个21*41的网格,x,y分别为其实部和虚部
x=real(z);
y=imag(z);
fz=sqrt((x.^2+y.^2)); %圆锥公式,z^2=x^2+y^2来求fz
h = surf(x,y,fz);
xlabel('x轴','FontSize',10); %xlabel是指横坐标
ylabel('y轴','FontSize',10); %ylabel是指纵坐标
zlabel('z轴','FontSize',10); %zlabel是指竖坐标
direction = [0 1 0]; %定义图像旋转的轴
rotate(h,direction,90) %调用rotate函数,旋转图像
(6)多种类型的三维表示
z=cplxgrid(50); %在复平面上面得到一个21*41的网格,x,y分别为其实部和虚部
x=real(z);
y=imag(z);
fz=sqrt((x.^2+y.^2)); %圆锥公式,z^2=x^2+y^2来求fz
% h = surf(x,y,fz);
mesh(x,y,fz);
xlabel('x轴','FontSize',10); %xlabel是指横坐标
ylabel('y轴','FontSize',10); %ylabel是指纵坐标
zlabel('z轴','FontSize',10); %zlabel是指竖坐标
subplot(221) %创建4个子图。这是第一个
a=mesh(x,y,fz); %绘制三维网线图
hold on %保持当前图像不刷新
subplot(222); %创建4个子图。这是第二个
b = surf(x,y,fz); %绘制三维曲面图
hold on %保持当前图像不刷新
subplot(223); %创建4个子图。这是第三个
c = plot3(x,y,fz); %创建三维线图
hold on
subplot(224); %创建4个子图。这是第四个
d = surf(x,y,fz); %绘制带有渲染效果的曲面图
l = light; %灯照函数句柄
l.Color = [0 1 0]; %灯的颜色
l.Position = [1 0 1];
hold on
三 结论(结果分析)
Matlab对于三维图像的绘制有着天然的优势,着得益于他庞大的函数库,能够很好的将图像的特点,特征,以及不同之处较为明显的体现出来,非常适合于对于图像的分析和表示,合理应用各类函数可以还能好的帮助表现表现图像特点。
四 心得体会
matlab中有丰富的图形处理能力,提供了绘制各种图形、图像数据的函数。他提供了一组绘制二维和三维曲线的函数,他们还可以对图形进行旋转、缩放等操作。
matlab内部还包含丰富的数学函数和数据类型,使用方便且功能非常强大。本学期通过对matlab的系统环境,数据的各种运算,矩阵的分析和处理,程序设计,绘图,数值计算及符号运算的学习,初步掌握了matlab的实用方法。通过理论课的讲解与实验课的操作,使我在短时间内学会使用matlab,同时,通过上机实验,对理论知识的复习巩固实践,可以自己根据例题编写设计简单的程序。