MATLAB-实现太阳、地球、月亮三者之间运转关系的模拟

例题:宇宙中存在着诸多的天体,以行星地球为例,地球绕着太阳进行公转,同时自身进行着自转。同样的,月亮在围绕地球旋转的同时自身也在自转。为了问题的简单化,假设太阳处于固定位置,且自身只有自转,只考虑太阳、地球、月亮三者的相互影响,请基于MATLAB 绘制出三者运动的三维模型。

MATLAB程序源代码

clear;
clc; 
n=1000;
t=linspace(0,2*pi,n);
hold on;
[x,y,z]=sphere;
k=0; 
view(3);
axis equal; 
axis([-17 17 -17 17 -10 10]);
title('Sun, Earth & Moon') 
theta=[pi/2.3 pi/3];
r=[15 2];
w=[1 12]; 
trace=nan+[t;t;t];
for j=t 
   k=k+1;cla; 
   surf(5*x,5*y,5*z,'AmbientStrength',1);shading interp 
   i=1; 
   T=[sin(theta(i)),0,cos(theta(i));0,1,0;-cos(theta(i)) 0 sin(theta(i))]; 
   O=r(i)*T*[cos(t);sin(t);zeros(1,n)]; 
   o=r(i)*T*[cos(j*w(i));sin(j*w(i));0]; 
   plot3(O(1,:),O(2,:),O(3,:),':'); 
   surf(x+o(1),y+o(2),z+o(3),'FaceLighting','gouraud','AmbientStrength',.5); 
   i=2; 
   T=[sin(theta(i)),0,cos(theta(i));0,1,0;-cos(theta(i)) 0 sin(theta(i))]; 
   O=repmat(o,1,n)+r(i)*T*[cos(t);sin(t);zeros(1,n)]; 
   o=o+r(i)*T*[cos(j*w(i));sin(j*w(i));0]; 
   surf(x/i+o(1),y/i+o(2),z/i+o(3),'FaceLighting','gouraud','AmbientStrength',.5); 
   plot3(O(1,:),O(2,:),O(3,:),':'); 
   trace(:,k)=o;
   plot3(trace(1,:),trace(2,:),trace(3,:),'r');
   shading interp;
   light('position',[0 0 0],'style','local'); 
   drawnow
end 

MATLAB程序运行结果 

 运行结果视频链接:MATLAB-实现太阳、地球、月亮三者之间运转关系的模拟-CSDN直播

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MATLAB码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值