在MATLAB中旋转3D图形

克里斯蒂娜(Christina)

我在matlab中生成了3D曲面。

clear all;
close all;
clc;

x = [1:0.1:5];
y=[1:50];  
[n1 n2] = size(x);
[m1, m2] = size(y);

for i = 1 : m2
    for j = 1 : n2

        z(i,j) = (x(1,j)) / (y(1,i));           
    end
end
[x, y] = meshgrid(x, y);

surf(y, x, z)
colorbar
xlabel('x')
ylabel('y')
zlabel('z')

我得到了以下绘制的表面:

在此处输入图片说明

我现在有兴趣按顺时针方向旋转四分之一圈我知道我可以使用“ rotate3d on”并选择最佳的AzEI,但是我不知道什么是AzEI以及应该如何满足我的需求?

例如:

在此处输入图片说明

还有另一个函数称为camroll()但是我不知道()中的值是什么,才能将立方体按顺时针方向旋转四分之一圈。90度是正确的答案吗?

任何帮助将不胜感激!

Benoit_11

正如@ASantosRibeiro所提到的,rotate函数将产生您想要的输出。顺便说一句,这是代码的矢量化版本,如果您的数据集大得多,则可能会发现它很有用。

x = 1:0.1:5;
y=1:50;  

X = repmat(x',1,size(y,2)).';
Y = repmat(y',1,size(x,2));
Z = X./Y;

figure
hSurf = surf(Y,X,Z);

rotate(hSurf,[1,0,0],45) % As proposed by @ASantosRibeiro

colorbar
xlabel('x')
ylabel('y')
zlabel('z')

repmat功能用于复制x和y,以形成X与Y正确尺寸被允许以将一个由另形式Z.这个操作是非常相似的呼叫在代码meshgrid。对于像您的示例中那样的小型数据集,运行时间与两种方法(在我的笔记本电脑上)相似,但是例如,当我使用x = 1:0.1:500和y = 1:500时,矢量化版本所需的时间减少了3倍,因此值得一看。

希望对您有所帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章