matlab三维图剪切掉其中一部分,如何操作?

来源:百度知道 编辑:UC知道 时间:2024/05/05 18:28:10
我想请教matlab三维图nan镂空命令的操作!就是我有一个三维曲面图,还有两条与之相交的螺旋线,现在要剪切掉三维图被两螺旋线所夹的那部分图形。可以用NaN镂空命令,但是我没有编写出来。能不能教教我!可以留个邮箱吗,我将方程及图发给您,麻烦您帮我看看!谢谢,或者讲个思路!
我的三维图是需要剪去两条螺旋线线之间的部分,这两条螺旋线也是空间线条。下面朋友的镂空我倒是看得懂,只是我这个图很特殊。因为两条线上的点是离散的,我是取100个点,组成两条线。就是说镂空坐标都是不均匀的,不像下面例子可以知道一个范围,剪贴掉就可以。这100个点[x;y;z]=101*3的矩阵啊!

利用“非数” NaN ,对图形进行剪切处理。
clf;
t=linspace(0,2*pi,100); r=1-exp(-t/2).*cos(4*t); % 旋转母线
[X,Y,Z]=cylinder(r,60); % 产生旋转柱面数据
ii=find(X<0&Y<0); % 确定 x-y 平面第四象限上的数据下标
Z(ii)=NaN; % 剪切
surf(X,Y,Z);colormap(spring),shading interp
light('position',[-3,-1,3],'style','local') % 设置光源
material([0.5,0.4,0.3,10,0.3]) % 设置表面反射

利用“非数” NaN ,对图形进行镂空处理。
P=peaks(30);P(18:20,9:15)=NaN; % 镂空
surfc(P);colormap(summer)
light('position',[50,-10,5]),lighting flat
material([0.9,0.9,0.6,15,0.4])

利用“非数” NaN ,对图形进行剪切处理。
clf;
t=linspace(0,2*pi,100); r=1-exp(-t/2).*cos(4*t); % 旋转母线
[X,Y,Z]=cylinder(r,60); % 产生旋转柱面数据
ii=find(X<0&Y<0); % 确定 x-y 平面第四象限上的数据下标
Z(ii)=NaN; % 剪切
surf(X,Y,Z);colormap(spring),shading interp
light('position',[-3,-1,3],'style','local') % 设置光源
material([0.5,0.4,0.3,10,0.3]) % 设置表面反射

利用“非数” NaN ,对图形进行镂