MATLAB 3D 动画简单实例

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动画制作的基础。

  1. 球体的动画

    首先我们绘制了一个球体,并且保证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)

img

-———————————————-

最后到这里:(图002)

img

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)

img

结果视图: (004)

img

参考:MATLAB 绘制3-D图形: http://blog.sina.com.cn/s/blog_4b1d907d010007bt.html

Published At
comments powered by Disqus