您的位置:首页 > 编程语言 > MATLAB

MATLAB 3D 动画简单实例

2013-01-13 08:32 309 查看
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)



-----------------------------------------------

最后到这里:(图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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: