使用Matlab绘制以平面为边界的圆柱

时间:2018-07-13 23:08:27

标签: matlab

我可以使用Matlab中的Symbolic Math Toolbox绘制半径为1且圆柱面为z = x + 2的圆柱体。

%% 
clc
close all

syms x y z t
r=1
fsurf(r*cos(t),r*sin(t),z,[0,2*pi,0,7])
hold on
fsurf(@(x,y) x+5,[-2,2,-2,2])

但是,我要绘制的圆柱体的下方是xy平面,上方是z = x + 2平面。谁能给我一个建议怎么做?我希望使用符号工具箱提供一个答案,如果可能的话,也希望使用数值Matlab提供另一个答案。

谢谢。

大卫

更新:我找到了一个数值解。

clc
close all

t=meshgrid(linspace(0,2*pi,100));
x=cos(t);
y=sin(t);
z=meshgrid(linspace(0,5,100))';
z(z>x+2)=NaN;
surf(x,y,z)
colormap jet
hold on

[x,y]=meshgrid(linspace(-1,1,500),linspace(-1,1,500));
z=x+2;
z(x.^2+y.^2>1)=NaN;
surf(x,y,z,'FaceColor','r','EdgeColor','none')

hold off

哪个产生这张图片:

enter image description here

但是,这对学生来说将是困难的,因此,我想知道两件事。

  1. 使用Matlab是否有很好的参数化方法?

  2. 使用Symbolic Math Toolbox是否有很好的参数化方法?

第二次更新::我发现了一种使用符号数学工具箱的方法。

clc
close all

syms r t u
fsurf(cos(t),sin(t),u*(cos(t)+2),[0,2*pi,0,1])
hold on

fsurf(r*cos(t),r*sin(t),r*cos(t)+2,[0,1,0,2*pi],'FaceColor','r')

rotate3d on

此代码产生以下图像:

enter image description here

0 个答案:

没有答案