我可以使用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
哪个产生这张图片:
但是,这对学生来说将是困难的,因此,我想知道两件事。
使用Matlab是否有很好的参数化方法?
使用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
此代码产生以下图像: