搞定立体图的三维视图
之前有人问我

在matlab里,这个其实可以使用view函数来调整视角,从而实现三视图的画法

网上有一个流传甚广的版本,附上链接如下
http://blog.sina.com.cn/s/blog_4d4afb6d0101bo4j.html
代码及结果如下所示
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]),通过视图匹配可以设置两个参数az和el
view([20 50]) 将方位角设置为 20 度,将仰角设置为 50 度。
'主视图'——[-90,0]
'左视图'——[0,0]
'俯视图'——[0 90]

下面介绍view函数的三元参数的实现及原理(推荐使用)
对于view([a,b,c])
其中[a,b,c]为与视线指向相同的方向向量
如 view([19 20 5]) 将视线设置为指向与向量 [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('默认三维视图')
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('俯视图')

得到结果一致的