欢迎光临散文网 会员登陆 & 注册

搞定立体图的三维视图

2021-04-02 10:36 作者:永远的修伊  | 我要投稿

之前有人问我

在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('俯视图')

得到结果一致的

搞定立体图的三维视图的评论 (共 条)

分享到微博请遵守国家法律