![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
Matlab 如何实现 只显示三维图像的一部分呢
现有一个mathematica程序:fig=ParametricPlot3D[{x,y,x^2/9-y^2/16},{x,-3,3},{y,-4,4}];For[z1=-...
现有一个mathematica程序:
fig=ParametricPlot3D[{x,y,x^2/9-y^2/16},{x,-3,3},{y,-4,4}];
For[z1=-0.95,z1<=1,z1+=0.05,Show[fig,PlotRange->{-1,z1},BoxRatios->{1,1,(Z1+1)/2}]]
能实现三维图像随z轴的增长而增长的动画。
怎样把他改成matlab程序呢?
我就写了这些:
x=-3:0.15:3;
y=-4:0.2:4;
[x,y]=meshgrid(x,y);
z=x.^2/9-y.^2/16;
surf(x,y,z);
set(gca,*DataAspectRatio*,[3 4 1])
m=moviein(40);
for i=1:40
axis([-3,3,-4,4,-1,-1+i/20])
m(:,i)=getframe;
end
但是效果不对,坐标轴外的部分也会一直显示。
怎么让三维图形在我设置的坐标轴外的部分不显示呢。就是只显示小方盒里的图形。求大神赐教。 展开
fig=ParametricPlot3D[{x,y,x^2/9-y^2/16},{x,-3,3},{y,-4,4}];
For[z1=-0.95,z1<=1,z1+=0.05,Show[fig,PlotRange->{-1,z1},BoxRatios->{1,1,(Z1+1)/2}]]
能实现三维图像随z轴的增长而增长的动画。
怎样把他改成matlab程序呢?
我就写了这些:
x=-3:0.15:3;
y=-4:0.2:4;
[x,y]=meshgrid(x,y);
z=x.^2/9-y.^2/16;
surf(x,y,z);
set(gca,*DataAspectRatio*,[3 4 1])
m=moviein(40);
for i=1:40
axis([-3,3,-4,4,-1,-1+i/20])
m(:,i)=getframe;
end
但是效果不对,坐标轴外的部分也会一直显示。
怎么让三维图形在我设置的坐标轴外的部分不显示呢。就是只显示小方盒里的图形。求大神赐教。 展开
1个回答
展开全部
必须动态修改z数据。
x=-3:0.15:3;
y=-4:0.2:4;
[x,y]=meshgrid(x,y);
z=x.^2/9-y.^2/16;
surf(x,y,z);
set(gca,'DataAspectRatio',[3 4 1])
m=moviein(40);
for i=1:40
zi=z;
zi(z>-1+i/20)=nan;
surf(x,y,(zi));
axis([-3,3,-4,4,-1,-1+i/20])
m(:,i)=getframe;
end
x=-3:0.15:3;
y=-4:0.2:4;
[x,y]=meshgrid(x,y);
z=x.^2/9-y.^2/16;
surf(x,y,z);
set(gca,'DataAspectRatio',[3 4 1])
m=moviein(40);
for i=1:40
zi=z;
zi(z>-1+i/20)=nan;
surf(x,y,(zi));
axis([-3,3,-4,4,-1,-1+i/20])
m(:,i)=getframe;
end
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询