Matlab动画模拟太阳系行星运动
更新时间:2024-04-18 00:25:01 阅读量: 综合文库 文档下载
Matlab动画模拟太阳系行星运动
figure('name','星系演示');%设置标题名字 pausetime=.02;%设置暂停时间
set(gca,'xlim',[-50 50],'ylim',[-50 30],'zlim',[-50 50]);
set(gcf,'doublebuffer','on') %消除抖动
xlabel('x轴'),ylabel('y轴'),zlabel('z轴'); axis equal; grid on;
view([3 5 2]); hold on
a=[8.5 12.5 20 30 50 60 80 100 90];b=[8 12 18 26 45 55 70 90 30]; omga=[4 1.25 1 0.5 0.1 0.05 0.25 0.125 1];r=[0.35 0.8 0.8 0.5 3 2.5 1.5 1.5 0.35];%长轴,短轴,角速度,球体半径
c=sqrt(a.^2-b.^2);h=pi/18;h1=pi/10;f=pi/9;g=pi/8;
aby=[h h 0;h1 h 0;h h 0;h h 0;h h 0;h h 0;h g 0;h h h;g 0 g];%每个轨道平面倾斜角度,偏移设置
%colo={'y','m','b','m','r','c','b','b'}; [X,Y,Z]=sphere(40);
surf(5*X,5*Y,5*Z);colormap(autumn) %设置太阳 light ('position',[1 0 2],'style','infinite') lighting phong material shiny
t=0:0.01*pi:50*pi; t';
num=length(a);
for n=1:num
x(:,n)=a(n)*cos(omga(n)*t)+c(n); y(:,n)=b(n)*sin(omga(n)*t);
z(:,n)=0*t; %计算未经轨道平面角度倾斜的轨道位置
xuanz(:,:)=[1 0 0;0 cos(aby(n,1)) -sin(aby(n,1));0 sin(aby(n,1)) cos(aby(n,1))]*[cos(aby(n,2)) 0 sin(aby(n,2));0 1 0;-sin(aby(n,2)) 0 cos(aby(n,2))]*[cos(aby(n,3)) -sin(aby(n,3)) 0;sin(aby(n,3)) cos(aby(n,3)) 0;0 0 1]; %每个轨道平面倾斜计算 xyz(:,:)=[x(:,n) y(:,n) z(:,n)]*xuanz(:,:); x(:,n)=xyz(:,1); y(:,n)=xyz(:,2);
z(:,n)=xyz(:,3); %计算轨道平面倾斜后的轨道位置
p(n)=surf(r(n)*X+x(1,n),r(n)*Y+y(1,n),r(n)*Z+z(1,n));shading interp %画出每个行星
plot3(x(:,n),y(:,n),z(:,n),'-k');%画出所有轨迹线 end
set(p(1),'facecolor','y');
set(p(2),'facecolor','m');set(p(3),'facecolor','b');set(p(4),'facecolor','m');
set(p(5),'facecolor','r');set(p(6),'facecolor','c');set(p(7),'facecolor','b');set(p(8),'facecolor','b');set(p(9),'facecolor','r');%设置所有行星的颜色
for m=1:5000 %旋转计算 for n=1:length(a)
set(p(n),'xdata',r(n)*X+x(m,n),'ydata',r(n)*Y+y(m,n),'zdata',r(n)*Z+z(m,n)); %所有行星的即时位置设置 end
pause(pausetime); %暂停一会 drawnow end
下面是更加复杂的动画模拟
figure('name','星系演示');%设置标题名字 pausetime=.01;%设置暂停时间
set(gca,'xlim',[-50 50],'ylim',[-50 30],'zlim',[-50 50]); set(gcf,'doublebuffer','on') %消除抖动
xlabel('x轴'),ylabel('y轴'),zlabel('z轴'); axis equal; grid on;
view([3 5 2]);
hold on
a=[8.5 12.5 20 30 50 60 80 100 90 4 4.5 4.9 5 1.5];%长轴
b=[8 12 18 26 45 55 70 90 30 4 4.5 4.9 5 1.5];%短轴 前八个为对应行星,第九个为彗星,后面为卫星
omga=[4 1.25 1 0.5 0.1 0.05 0.25 0.125 0.4 4 3.9 3.5 3 6];%角速度 r=[0.35 0.8 0.8 0.5 3 2.5 1.5 1.5 0.5 0.35 0.36 0.5 0.4 0.35];%球体半径
c=sqrt(a.^2-b.^2);h=pi/18;h1=pi/10;f=pi/9;g=pi/8;g1=pi/6;
aby=[h h 0;h1 h 0;h h 0;h h 0;h h 0;h h 0;h g 0;h h h;g 0 g;0 0 0;g1 h 0;0 f 0;0 0 0;0 g1 0];%每个轨道平面偏移设置
runu=35:0.5:40;theta=(0:0.05*pi:2*pi)';runa=2.8:0.4:5.6;
xx=cos(theta)*runu+20;yy=0.9*sin(theta)*runu;zz=-0.17*xx-0.17*yy; plot3(xx,yy,zz,':k'); %小行带设置
hx=cos(theta)*runa;hy=sin(theta)*runa;hz=-0.1*hx-0.2*hy; %colo={'y','m','b','m','r','c','b','b'}; [X,Y,Z]=sphere(40);
surf(5*X,5*Y,5*Z);colormap(autumn) %设置
light ('position',[1 0 2],'style','infinite') lighting phong material shiny
t=0:0.01*pi:50*pi; t';
num=length(a);
for n=1:num
x(:,n)=a(n)*cos(omga(n)*t)+c(n); y(:,n)=b(n)*sin(omga(n)*t); z(:,n)=0*t;
xuanz(:,:)=[1 0 0;0 cos(aby(n,1)) -sin(aby(n,1));0 sin(aby(n,1)) cos(aby(n,1))]*[cos(aby(n,2)) 0 sin(aby(n,2));0 1 0;-sin(aby(n,2)) 0 cos(aby(n,2))]*[cos(aby(n,3)) -sin(aby(n,3)) 0;sin(aby(n,3)) cos(aby(n,3)) 0;0 0 1];
xyz(:,:)=[x(:,n) y(:,n) z(:,n)]*xuanz(:,:); x(:,n)=xyz(:,1); y(:,n)=xyz(:,2); z(:,n)=xyz(:,3); if n<=9
p(n)=surf(r(n)*X+x(1,n),r(n)*Y+y(1,n),r(n)*Z+z(1,n));shading interp
plot3(x(:,n),y(:,n),z(:,n),'-k');%画出所有轨迹线 else if n<=13
p(n)=surf(r(n)*X+x(1,n)+x(1,5),r(n)*Y+y(1,n)+y(1,5),r(n)*Z+z(1,n)
+z(1,5));shading interp
pmuw(n-9)=plot3(x(:,n)+x(1,5),y(:,n)+y(1,5),z(:,n)+z(1,5),'-k');%木卫1,2,3,4轨道初位置 else
p(n)=surf(r(n)*X+x(1,n)+x(1,3),r(n)*Y+y(1,n)+y(1,3),r(n)*Z+z(1,n)+z(1,3));shading interp
pmuw(n-9)=plot3(x(:,n)+x(1,3),y(:,n)+y(1,3),z(:,n)+z(1,3),'-k');%月球轨道设置 end end end
for n=1:length(runa)
ph(n)=plot3(hx(:,n)+x(1,6),hy(:,n)+y(1,6),hz(:,n)+z(1,6),'-c'); end
set(p(1),'facecolor','y');
set(p(2),'facecolor','m');set(p(3),'facecolor','b');set(p(4),'facecolor','m');
set(p(5),'facecolor','r');set(p(6),'facecolor','c');set(p(7),'facecolor','b');set(p(8),'facecolor','b');set(p(9),'facecolor','r'); for n=10:13
set(p(n),'facecolor','b'); end
set(p(14),'facecolor','k');
for m=1:5000 for n=1:num if n<=9
set(p(n),'xdata',r(n)*X+x(m,n),'ydata',r(n)*Y+y(m,n),'zdata',r(n)*Z+z(m,n));%所有的即时位置 else if n<=13
set(p(n),'xdata',r(n)*X+x(m,n)+x(m,5),'ydata',r(n)*Y+y(m,n)+y(m,5),'zdata',r(n)*Z+z(m,n)+z(m,5));
set(pmuw(n-9),'xdata',x(:,n)+x(m,5),'ydata',y(:,n)+y(m,5),'zdata',z(:,n)+z(m,5)); else
set(p(n),'xdata',r(n)*X+x(m,n)+x(m,3),'ydata',r(n)*Y+y(m,n)+y(m,3),'zdata',r(n)*Z+z(m,n)+z(m,3));
set(pmuw(n-9),'xdata',x(:,n)+x(m,3),'ydata',y(:,n)+y(m,3),'zdata',z(:,n)+z(m,3)); end end end
for n=1:length(runa)
set(ph(n),'xdata',hx(:,n)+x(m,6),'ydata',hy(:,n)+y(m,6),'zdata',hz(:,n)+z(m,6));%光环即时位置 end
pause(pausetime); %暂停一会 drawnow end
正在阅读:
Matlab动画模拟太阳系行星运动04-18
国新置业申请报告05-27
罗浮山作文500字06-27
电力机车钳工技能鉴定试题11-27
历史趣谈:曹操故意对许攸欺瞒粮草之事是奸诈还是机警 -12-07
商品陈列培训内容06-07
医师定期考核系统操作说明05-01
演讲致辞-2019年净化社会文化环境专项的提升方案 精品11-29
领导力提升与自我修炼03-28
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 太阳系
- 行星
- 模拟
- 运动
- 动画
- Matlab
- 河北省刷子及清扫工具行业企业名录2018版178家
- 上海大学数据库上机作业上机练习2作业(1)
- 暑期社会实践通讯稿之一
- 大一下学期英语作业三题及答案
- 粤教版九年级化学第四单元测试卷
- ps复习重点题
- 对外经济贸易大学国际贸易学参考书
- C课程设计
- MH5008-2005民用机场供油工程建设技术规范
- 实验指导(1)spring
- 30诗五首
- 州工商联工作管理制度
- 七年级下册数学第五章相交线与平行线导学案
- 2018年中国货架陈列广告行业供需趋势研究报告目录
- 第01套 给定程序中,函数fun的功能
- 算法设计与分析实验指导4 - 回溯法
- 初中英语语法专项练习大全-带答案(包括介词动词等所有词类、句
- 第06章 骨骼系统 - 图文
- 闽教版四年级英语下册教案Unit 6 Weather Part B教案
- 实验六、用窗函数法设计FIR滤波器