搞定立體圖的三維視圖
之前有人問我

在matlab里,這個其實(shí)可以使用view函數(shù)來調(diào)整視角,從而實(shí)現(xiàn)三視圖的畫法

網(wǎng)上有一個流傳甚廣的版本,附上鏈接如下
http://blog.sina.com.cn/s/blog_4d4afb6d0101bo4j.html
代碼及結(jié)果如下所示
titles={'主視圖','左視圖','俯視圖','三維圖'};
angle={[-90,0],[0,0],[0 90],[-37.5,30]};
for i=1:4
subplot(2,2,i);
[X,Y] = meshgrid(-5:0.1:5);
Z = (X.^2-2*X).*exp(-X.^2-Y.^2-X.*Y);
mesh(X,Y,Z)
view(angle{i});title(titles{i});
end


簡單來說,view([az,el]),通過視圖匹配可以設(shè)置兩個參數(shù)az和el
view([20?50]) 將方位角設(shè)置為 20?度,將仰角設(shè)置為 50 度。
'主視圖'——[-90,0]
'左視圖'——[0,0]
'俯視圖'——[0 90]

下面介紹view函數(shù)的三元參數(shù)的實(shí)現(xiàn)及原理(推薦使用)
對于view([a,b,c])
其中[a,b,c]為與視線指向相同的方向向量
如? view([19 20 5]) 將視線設(shè)置為指向與向量 [19 20 5] 相同方向的向量
此時
'主視圖'——[1,0,0]
'左視圖'——[0,-1,0]
'俯視圖'——[0,0,1]
代碼及視圖如下
[x,y] = meshgrid(-5:0.1:5);
z = (x.^2-2*x).*exp(-x.^2-y.^2-x.*y);
subplot(2,2,1)
mesh(x,y,z)
view([-37.5 30])
title('默認(rèn)三維視圖')
subplot(2,2,2)
mesh(x,y,z)
view([1 0 0])
title('主視圖')
subplot(2,2,3)
mesh(x,y,z)
view([0 -1 0])
title('左視圖')
subplot(2,2,4)
mesh(x,y,z)
view([0 0 1])
title('俯視圖')

得到結(jié)果一致的