Matlab 通过曲线旋转生成三维绘图

Matlab 通过曲线旋转生成三维绘图,matlab,Matlab,我试图旋转一条二维曲线来生成一个三维曲面图 我试过使用 [X,Z,Y] = cylinder(u); surf(X,Y,Z), axis square 然而,这使我的曲线绕着错误的轴旋转。如何更改轴 非常感谢。要旋转圆柱体的轴,只需更改X、Y和Z的顺序即可 [X,Y,Z] = cylinder(u); surf(X,Y,Z) %# rotation around Z surf(Z,X,Y) %# rotation around X surf(Y,Z,X) %# rotation around

我试图旋转一条二维曲线来生成一个三维曲面图

我试过使用

[X,Z,Y] = cylinder(u);
surf(X,Y,Z), axis square
然而,这使我的曲线绕着错误的轴旋转。如何更改轴


非常感谢。

要旋转圆柱体的轴,只需更改X、Y和Z的顺序即可

[X,Y,Z] = cylinder(u);

surf(X,Y,Z) %# rotation around Z
surf(Z,X,Y) %# rotation around X
surf(Y,Z,X) %# rotation around Y
编辑

要更改曲线的旋转轴,必须计算曲面。例如,要围绕y轴旋转
y=sin(alpha)
,使用
alpha=0:0.1:pi
,可以编写

r = 0:0.1:pi;
z = sin(r);
theta = 0:pi/20:2*pi;
xx = bsxfun(@times,r',cos(theta));
yy = bsxfun(@times,r',sin(theta));
zz = repmat(z',1,length(theta));
dfig,surf(xx,yy,zz)
axis equal

不,这只会更改显示的绘图方向@颜山:好的,我现在明白了。我添加了另一种改变旋转轴的方法,这是一种很好的旋转方式,乔纳斯。谢谢问题是,我有不止一条曲线要旋转,当我使用你的方法时,矩阵乘法失败了。它工作得很好,我用我的代码编辑了这个问题。这是一个很好的旋转方式,乔纳斯。谢谢问题是,我有不止一条曲线要旋转,当我使用你的方法时,矩阵乘法失败了。它只适用于一条曲线,我已经用我的代码编辑了这个问题。你能看一看,告诉我怎样才能对所有的2D绘图都这样做吗?@颜山:如果你有多条曲线,那么你必须分别为每一条曲线创建一个曲面。