2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 基于二维切片图序列的三维立体建模MATLAB仿真

基于二维切片图序列的三维立体建模MATLAB仿真

时间:2018-12-22 23:38:12

相关推荐

基于二维切片图序列的三维立体建模MATLAB仿真

目录

1.算法概述

2.仿真效果预览

3.核心MATLAB程序

4.完整MATLAB程序

1.算法概述

isosurface 等值面函数

调用格式:fv = isosurface(X,Y,Z,V,isovalue)

作用:返回某个等值面(由isovalue指定)的表面(faces)和顶点(vertices)数据,存放在结构体fv中(fv由vertices、faces两个域构成)。如果是画隐函数v = f(x,y,z) = 0的三维图形,那么等值面的数值为isovalue = 0。

isosurface的语法

fv = isosurface(X,Y,Z,V,isovalue)

fv = isosurface(V,isovalue)

fvc = isosurface(...,colors)

slice等值面函数

slice(X,Y,Z,V,xslice,yslice,zslice) 为三维体数据 V 绘制切片。指定 X、Y 和 Z 作为坐标数据。使用以下形式之一指定 xslice、yslice 和 zslice 作为切片位置:

要绘制一个或多个与特定轴正交的切片平面,请将切片参数指定为标量或向量。要沿曲面绘制单个切片,请将所有切片参数指定为定义曲面的矩阵。

slice(V,xslice,yslice,zslice) 使用 V 的默认坐标数据。V 中每个元素的 (x,y,z) 位置分别基于列、行和页面索引。

slice(_,method) 指定插值方法,其中 method 可以是 ‘linear’(默认值)、’cubic’ 或 ‘nearest’。可将此选项与上述语法中的任何输入参数一起使用。

slice(ax,_) 在指定坐标区而不是当前坐标区 (gca) 中绘图。

s = slice(_) 返回创建的 Surface 对象。slice 为每个切片返回一个 Surface 对象。

2.仿真效果预览

基于二维切片图序列的三维立体建模MATLAB仿真

3.核心MATLAB程序

...............................h=figure(1);set(h,'name','取单切片')subplot(221)slice(x,y,z,v,[],[1],[]); % 切片函数 y=1shading interp % 平滑处理set(gca,'zdir','reverse'); % ‘’都是属性调整axis equal % 将横轴纵轴的定标系数设成相同值 ,即单位长度相同grid onsubplot(222)slice(x,y,z,v,[],[2],[]); % 切片函数 y=2shading interp % 平滑处理colormap('jet') % 颜色属性set(gca,'zdir','reverse'); % ‘’都是属性调整axis equalgrid onsubplot(223)slice(x,y,z,v,[],[3],[]);shading interp set(gca,'zdir','reverse');axis equalgrid onsubplot(224)slice(x,y,z,v,[],[4],[]);shading interp set(gca,'zdir','reverse');axis equalgrid on% 2.全空间立体切片h2=figure(2);set(h2,'name','全空间切片','MenuBar','none','ToolBar','none')slice(x,y,z,v,[1:2:27],[2 3 4],[2 3 4 5]) % x方向1-27,以2位单元,y方向 分成3分,z方向分成4分shading interp % 图像平滑colorbar% 颜色条colormap('jet') % 颜色属性set(gca,'zdir','reverse'); % 属性调整axis equalgrid on box on % 显示坐标区轮廓 显示围绕当前坐标区的框轮廓% 3.立体包络图h3=figure(3);subplot(221);set(h3,'name','定值包络立体图','MenuBar','none','ToolBar','none')set(gcf,'InvertHardcopy','off')fw=150; % fw是作主要可变参数,控制最外层包络面的值 %%此值为最外层包络面取值fv=isosurface(x,y,z,v,fw); % 从三维体数据中提取等值面数据% isovalue 中指定的等值面值处的体数据 V 计算等值面数据。等值面连接具有指定值的点,与等高线连接仰角相同的点的方式大致相同p=patch(fv);% 创建一个或多个填充多边形set(p,'facecolor','b','edgecolor','none');patch(isocaps(x,y,z,v, fw), 'FaceColor', 'interp', 'EdgeColor', 'none');% isocaps 计算等值面端帽几何图% colorbar% colormap('jet')box ondaspect([1,1,1]) % 坐标轴尺寸变化为1:1:1view(3)% 观看角度 三维视角set(gca,'zdir','reverse','color',[0.2,0.2,0.2]);camlight % 在照相机坐标系中创建或移动光源对象camproj perspective % 设置或查询投影类型 lighting phong % 指定光照算法 axis equalgrid on% title(['最外层表面的值为: ' , num2str(fw)]);% 三维投影hold onsubplot(222);set(h3,'name','定值包络立体图','MenuBar','none','ToolBar','none')set(gcf,'InvertHardcopy','off')fw=150; % fw是作主要可变参数,控制最外层包络面的值 %%此值为最外层包络面取值fv=isosurface(x,y,z,v,fw); % 从三维体数据中提取等值面数据%isovalue 中指定的等值面值处的体数据 V 计算等值面数据。等值面连接具有指定值的点,与等高线连接仰角相同的点的方式大致相同....................................A002

4.完整MATLAB程序

V

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。