matlab三维图剪切掉其中一部分,如何操作?
来源:百度知道 编辑:UC知道 时间:2024/05/05 18:28:10
我的三维图是需要剪去两条螺旋线线之间的部分,这两条螺旋线也是空间线条。下面朋友的镂空我倒是看得懂,只是我这个图很特殊。因为两条线上的点是离散的,我是取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 ,对图形进行镂