2016-12-28 64 views
1

我想有一個3D立體投影圖: enter image description here3D立體投影圖中,如何改變y軸

爲此,我使用代碼(只是無軸)這樣

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

你正在尋找被稱爲[斜投影]投影(HTTPS://en.wikipedia .org/wiki/Oblique_projection),雖然在MATLAB中沒有內置的方法,但在鏈接副本中有答案提供的用戶提交選項。 – gnovice

回答

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') 
+0

謝謝你的回答。不幸的是,你的回答不適合我的問題。在你的例子中,y軸是垂直的或者x軸不是水平的。我需要:水平x軸與非垂直y軸。 –

0

我想你在找什麼正在改變Projectionperspective截至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

+0

非常感謝您的回答。但我不需要透視(消失點)。我需要一個平行六面體,正如我在MS Word製作的圖中所示或由我的問題中的代碼生成的那樣。 –