根据花瓶的侧面投影图,用Matlab绘制花瓶的三维立体图 |
您所在的位置:网站首页 › 用matlab绘制三维图形题目的报告怎么写 › 根据花瓶的侧面投影图,用Matlab绘制花瓶的三维立体图 |
现有一花瓶侧面投影如图 问题: 1) 做出该花瓶三维立体图; 2) 计算其表面积; 计算其体积。
第一次参加数学建模,从来没有接触过Matlab语言,一上来就碰到这种数字图像处理的问题就懵了。完全是一边摸索,一边自学Matlab语言,一遍又一遍的在机子上调试。出错了就改;运行不同了就调试.....异常辛苦。在这之前只会C/C++语言,而且这两种语言还只停留在书本上,没有编程经验。所以在参加建模以前颇费了思量,下了一番决心。以前笃信一句名言——“机会是留给有准备的人的”,当时那句名言写在中学的一块标志牌上,所以记得很清楚。这句话乍看一下没有错,但仔细想想,你会发现一个问题。如果你每次都因为没有准备好,而拒绝尝试,放弃机会,你怎么能知道自己需要准备什么,怎么会提高呢?退一步讲,即使第一次你失败了,但你有了这次经历,有了经验,知道了自己的不足,知道了自己还需要准备什么,你就可以在心里对自己说,“我还会回来的,明年再战”。从这个角度讲,你就是赢家。 总结起来就是一句话“年轻人,不要害怕失败,不要拒绝尝试”。
闲话少说,切入正题。 数字图像在计算机中使用数字(0~255)表示的,对上图中的花瓶来讲,图中阴影部分用‘0’表示,空白部分用‘1’表示。一个自然而然的想法就是利用这个特点,找出花瓶边缘的坐标,然后拟合出一条曲线(本文使用三次样条曲线拟合花瓶侧面轮廓曲线),剩下的交给Matlab就可以了。对于表面积和体积,可以采用梯形法数值积分的方法。 源程序: clearX=imread('t1.bmp');[m,n]=size(X);A=[];A1=[];A2=[];k1=1;k2=1; %寻找花瓶的最上面坐标for j=1:n for i=1:m if X(i,j)==0 A1(k1)=i;k1=k1+1; break; end endendn1=min(A1);%寻找花瓶的最下面坐标for j=1:n for i=m:-1:1 if X(i,j)==0 A2(k2)=i;k2=k2+1; break; end endendn2=max(A2);%读出花瓶左侧轮廓的y坐标for i=1:m for j=1:n if X(i,j)==0 A(i)=j; break; end endend%%%绘制三维立体图x1=n1:n2;x=n1:1:n2;y=spline(x1,A(x1),x);[X,Y,Z]=cylinder(520-y,60);mesh(X,Y,Z) %计算体积vi=pi*(y-520).^2;V=trapz(x,vi) %计算表面积for i=1:1:n2-n1+1 if i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |