MATLAB 3D 动画简单实例
MATLAB 3D 动画简单实例
翻译自网站: http://www.matrixlab-examples.com/simple-animation-3d.html
本文是在系统学习MATLAB绘图(2D-3D)之前的一个引例。
系统学习资料在: MATLAB 2-D and 3-D 绘图 望喜欢!
-—————– 本文将展示2个使用MATLAB制作的简单的3D动画。在第一个例子中,我们对一个球体sphere进行动画制作,旋转了观察的角度,但没有改变物体形状。 在第二个例子中,我们画了一个抛物面paraboloid,并且改变了它的大小和形状。这些简单的技术是MATLAB动画制作的基础。
球体的动画
首先我们绘制了一个球体,并且保证3D坐标系的比例是正常的。然后,变换我们观察的角度,从方位角和高度进行了改变。整个过程不改变球体形状大小,只是改变视角。
‘drawnow’语句作用就是更新当前的图形。它冲掉了queue事件,强行让MATLAB更新屏幕。
完成以上功能的代码如下: -————————–
clear; clc; close all
% Draw a sphere
sphere
% Make the current axis box square in size
axis('square')
% Define title and labels for reference
title('Rotation of a sphere...')
xlabel('x'); ylabel('y'); zlabel('z')
% Modify azimuth (horizontal rotation) and update drawing
for az = -50 : .2 : 30
view(az, 40)
drawnow
end
% Modify elevation (vertical rotation) and update drawing
for el = 40 : -.2 : -30
view(30, el)
drawnow
end
-————————
首先从这里开始:(图001)
-———————————————-
最后到这里:(图002)
2.抛物面动画
首先我们画了一个抛物面,让坐标轴比较合适地显示。然后一点一点拉伸图形,使用set函数来不断更新数据的z坐标,(set函数是用来修改处理中的图形的属性的)。最后我们旋转了方位角azimuth,到了另一个视角。
实例代码: -————————-
clear; clc; close all
% Define paraboloid
X = -2 : .1 : 2; Y = X;
[x, y] = meshgrid(X, Y);
z = .5 * (x.^2 + y.^2);
% Draw 3D figure, keep track of its handle
h = surf(x,y,z);
% Keep axes constant
axis([-2 2 -2 2 0 20])
% Define title and labels for reference
xlabel('x'); ylabel('y'); zlabel('z')
% Stretch paraboloid and show updates
for i = 1 : .1 : 5;
set(h, 'xdata', x, 'ydata', y, 'zdata', i*z)
drawnow
end
% Modify azimuth (horizontal rotation) and update drawing
for az = -37.5 : .5 : 30
view(az, 30)
drawnow
end
-———————–
开始视图: (003)
结果视图: (004)
参考:MATLAB 绘制3-D图形: http://blog.sina.com.cn/s/blog_4b1d907d010007bt.html