根据花瓶的侧面投影图,用Matlab绘制花瓶的三维立体图
现有一花瓶侧面投影如图

问题:
1) 做出该花瓶三维立体图;
2) 计算其表面积;
计算其体积。
第一次参加数学建模,从来没有接触过Matlab语言,一上来就碰到这种数字图像处理的问题就懵了。完全是一边摸索,一边自学Matlab语言,一遍又一遍的在机子上调试。出错了就改;运行不同了就调试.....异常辛苦。在这之前只会C/C++语言,而且这两种语言还只停留在书本上,没有编程经验。所以在参加建模以前颇费了思量,下了一番决心。以前笃信一句名言——“机会是留给有准备的人的”,当时那句名言写在中学的一块标志牌上,所以记得很清楚。这句话乍看一下没有错,但仔细想想,你会发现一个问题。如果你每次都因为没有准备好,而拒绝尝试,放弃机会,你怎么能知道自己需要准备什么,怎么会提高呢?退一步讲,即使第一次你失败了,但你有了这次经历,有了经验,知道了自己的不足,知道了自己还需要准备什么,你就可以在心里对自己说,“我还会回来的,明年再战”。从这个角度讲,你就是赢家。
总结起来就是一句话“年轻人,不要害怕失败,不要拒绝尝试”。
闲话少说,切入正题。
数字图像在计算机中使用数字(0~255)表示的,对上图中的花瓶来讲,图中阴影部分用‘0’表示,空白部分用‘1’表示。一个自然而然的想法就是利用这个特点,找出花瓶边缘的坐标,然后拟合出一条曲线(本文使用三次样条曲线拟合花瓶侧面轮廓曲线),剩下的交给Matlab就可以了。对于表面积和体积,可以采用梯形法数值积分的方法。
源程序:
clear
X=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
end
end
n1=min(A1);
%寻找花瓶的最下面坐标
for j=1:n
for i=m:-1:1
if X(i,j)==0
A2(k2)=i;k2=k2+1;
break;
end
end
end
n2=max(A2);
%读出花瓶左侧轮廓的y坐标
for i=1:m
for j=1:n
if X(i,j)==0
A(i)=j;
break;
end
end
end
%%
%绘制三维立体图
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<n2-n1+1
drtay(i)=y(i+1)-y(i);
else
drtay(i)=0;
end
end
si=2*pi*(520-y)./2.*sqrt(1+drtay.^2);
S=trapz(x,si)+pi*38*38
rotate3D on;
set(gca,'zdir','reverse');
三维立体图如下:

根据花瓶的侧面投影图,用Matlab绘制花瓶的三维立体图的更多相关文章
- MATLAB绘制三角网及三维网线
今天博主给大家介绍一些比较常见的可视化操作,绘制三角网及三维网线. 三角网是由一系列连续三角形构成的网状的平面控制图形,是三角测量中布设连续三角形的两种主要扩展形式,同时向各方向扩展而构成网状,优点为 ...
- MATLAB绘制函数图
序言 Matlab可以根据用户给出的数据绘制相应的函数图.对于单个2D函数图,需要给出一个行向量x作为函数图上离散点集的横坐标,以及一个与x列数一样的横坐标y作为函数图上点集的纵坐标. 向量x和y的取 ...
- 用matlab绘制中国地图
reference:https://jingyan.baidu.com/article/870c6fc36fdacfb03ee4be58.html shp: http://muchong.com/ht ...
- Matlab 绘制三维立体图(以地质异常体为例)
前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...
- Matlab slice方法和包络法绘制三维立体图
前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...
- 用matlab绘制幂函数
用matlab绘制幂函数 下周轮到我做论文汇报了,刚好前两天看了网格水印的文章,就决定汇报前两天看到的那篇论文了.在准备ppt的过程中,绘制了一些幂函数,感觉matlab真的是很强大啊,可以绘制各种曲 ...
- [ZZ] 用matlab绘制箭头
用matlab绘制箭头 http://npfeng900.blog.163.com/blog/static/14456108201221922944998/ 用matlab绘制箭头1 用matlab绘 ...
- Matlab绘制三维曲面(以二维高斯函数为例)
原文地址为:Matlab绘制三维曲面(以二维高斯函数为例) 寒假学习了一下Python下的NumPy和pymatlab,感觉不是很容易上手.来学校之后,决定继续看完数字图像处理一书.还是想按照上学期的 ...
- matlab绘制心形函数
matlab 7.0 绘制二维.三维心形函数 又到周六,下周就要迎来春节小长假了,想想都有些激动.在外漂了一整年,总于可以回家和父母团聚了,还有吃好吃的...,哎呀~想想都流口水呢.不过先 ...
随机推荐
- H5C3--边框阴影box-shadow
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- webstorm 2017.3.5之后 激活
选择"license server" 输入:http://idea.codebeta.cn
- Jboss 默认加载项目访问
修改JBOSS的server.xml路径为: D:\Program Files\jboss-4.2.2.GA\server\default\deploy\jboss-web.deployer\serv ...
- XML之基础和DTD解析
本笔记可根据W3school教程学习: 首先-----了解XML文档结构.语法规范.作用 -----了解DTD约束的作用.具体约束语法 <?xml version="1.0" ...
- LAMP标准化安装
操作系统说明: 操作系统 版本 linux red hat release 6.4 关键软件包说明: 软件包 版本 目录 运行用户 httpd-2.2.27.tar.gz 2.2.27 /usr/lo ...
- Vue.js NPM 安装方法
由于 npm 安装速度慢,本教程使用了淘宝的镜像及其命令 cnpm,安装使用介绍参照:使用淘宝 NPM 镜像. npm 版本需要大于 3.0,如果低于此版本需要升级它: # 查看版本 $ npm -v ...
- curl应用大法
curl -s -S -k --max-redirs 5 -m 60 --connect-timeout 60 -w "\n\n%{time_namelookup}|%{time_conn ...
- js生成二维码以及插入图片
先根据qrcode官网demo,不同属性值的变化,二维码的变化效果:https://larsjung.de/jquery-qrcode/latest/demo/ 进入demo中,审查元素查看里面引用的 ...
- Poj 1830 高斯消元
开关问题 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 5418 Accepted: 2022 Description 有N个相 ...
- go strcut 封装
package model import "fmt" type person struct { Name string age int //其它包不能直接访问.. sal floa ...