3D倾斜投影视图,如何改变y轴

时间:2016-12-28 22:59:29

标签: matlab matlab-figure

我想要一个3D倾斜投影视图: enter image description here

为此,我使用了像这样的代码(只有没有轴)

angle = 30;
surf(x, -x*sind(angle)+y*cosd(angle),z)
axis off
view([90,50])

另一个类似的解决方案(使用对象的坐标转换,而不是轴的坐标转换)在这里Oblique projection in Matlab mesh(由 gnovice 表示):

enter image description here

但我也需要正确显示轴。是否可以实现轴属性(y轴)来更改其方向的显示(例如,使用Java)?

2 个答案:

答案 0 :(得分:0)

如果你想从特定的角度查看你的情节(正如你所描述的那样),view非常优雅,但是你的代码没有按你所描述的那样做。

使用view([90,50]),您可以在水平和垂直方向上获得Z轴和Y轴,而不是Z和X.

<code>view([90,50])</code>

你想要的是view([0,0])

<code>view([0,0])</code>

虽然你不能完全按照你的方式显示你的轴,但view([0,0])接近(X轴不是水平,但接近)。

<code>view([10,15])</code>

用于演示的代码:

x=1:0.1:4;
y=1:0.1:4;
[X,Y]=meshgrid(x,y);
Z=sin(X).^2+cos(Y).^2;
surf(X,Y,Z);
xlabel('x')
ylabel('y')
zlabel('z')

答案 1 :(得分:0)

我认为您正在寻找的是将Projection更改为perspective,如https://www.mathworks.com/help/matlab/ref/axes-properties.html#prop_Projection所述,然后使用view([0,0])。例如,如果您运行

x = linspace(0,1);
y = linspace(0,1);
[xx,yy] = meshgrid(x,y);
zz = xx.^2 + yy.^2;
surf(xx,yy,zz)
xlabel('x')
ylabel('y')
zlabel('z')
ax = gca;
ax.Projection = 'perspective';
view([0,0])

你会得到下图:

enter image description here