matlab_动画制作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
点的简单动画%by dynamic
%2008.6.23
%
t=0:pi/1000:10*pi;
x=30*sin(t);
y=30*cos(t);
z=t;
plot3(x,y,z);
hold on
%axis equal
comet3(x,y,z,0.5)
%%
%by dynamic
%2008.6.13
%
vx = 100*cos(1/4*pi);
vy = 100*sin(1/4*pi);
t = 0:0.001:15;
x = vx*t;
y = vy*t-9.8*t.^2/2;
comet(x,y)
%%
%by dynamic
%2008.6.13
%
vx = 100*cos(1/4*pi);
vy = 100*sin(1/4*pi);
t = 0:0.001:15;
x = vx*t;
y = vy*t-9.8*t.^2/2;
comet(x,y)
%%
%一般的过程
%擦除重绘模式动画
%选择一个擦除模式
set(h,'erasemode',erasemode)%h是需要执行动画图像的句柄,一般都是由line或者plot创建%
%需要执行一些图形计算命令
%
%循环语句中更新坐标数据,一般使用for或者while
for i=1:n
%
%必要的MATLAB命令
%
set(h,'xdata',xdata,'ydta',ydata)%更新图像的坐标数据
drownnow%刷新屏幕
%
%其它Matlab语句
%
End
%%
%运动的小球
%function f=anim_ball(K,ki)
%
%演示红色小球沿一条封闭旋螺线运动的实时动画
% 仅演示实时动画的调用格式为anim_ball(K)
% 既演示实时动画又拍摄照片的调用格式为f=anim_ball(K,ki)
% K 红球运动的循环数(不小于1 )
% ki 指定拍摄照片的瞬间,取1 到1034 间的任意整数
% f 存储拍摄的照片数据,可用image(f.cdata) 观察照片
% 产生封闭的运动轨线
%
%
%by dynamic
%all rights reserved by
%2007.10.26
%
t1=(0:1000)/1000*10*pi;
x1=cos(t1);y1=sin(t1);z1=-t1;
t2=(0:10)/10;
x2=x1(end)*(1-t2);y2=y1(end)*(1-t2);z2=z1(end)*ones(size(x2));
t3=t2;
z3=(1-t3)*z1(end);x3=zeros(size(z3));y3=x3;
t4=t2;
x4=t4;y4=zeros(size(x4));z4=y4;
x=[x1 x2 x3 x4];y=[y1 y2 y3 y4];z=[z1 z2 z3 z4];
h=figure('numbertitle','off','name','擦除动画演示(运动的小球)——Matlabsky');
plot3(x,y,z,'b')
axis off
%绘制红点
h=line('Color',[1 0 0],'Marker','.','MarkerSize',40,'EraseMode','xor');%擦除模式设为xor
n=length(x);
i=1;j=1;
%循环改变坐标,表现为小球运动
while 1
if ~ishandle(h),return,end
set(h,'xdata',x(i),'ydata',y(i),'zdata',z(i));
drawnow;
pause(0.0005) %这里设置小球运动速度
i=i+1;
if nargin==2 && nargout==1
if(i==ki&&j==1);f=getframe(gcf);end %获取指定
的帧,保存到f中
end
if i>n
%判断是否运行了一周,是将i设置为1,并将
运行周数j加1
i=1;j=j+1;
%判断是否到指定的运行周数,是,退出
if j>K;break;end
end
end
%%
%挂摆横梁
%by dynamic
%2008.6.9
%
h=figure('numbertitle','on','name','擦除动画演
示(挂摆横梁)——Matlabsky');
%绘制横梁
plot([-0.2;0.2],[0;0],'-k','linewidth',20);
%画初始位置的单摆
g=0.98;%重力加速度,可以调节摆的摆速
l=1;%摆长
theta0=pi/4;%初始角度
x0=l*sin(theta0);%初始x坐标
y0=-l*cos(theta0);%初始y坐标
axis([-0.75,0.75,-1.25,0]);
axis off
%创建摆锤
head=line(x0,y0,'color','r','linestyle','.','erasemode','xor','markersize',40);%擦除模式为xor %创建摆杆