例题:宇宙中存在着诸多的天体,以行星地球为例,地球绕着太阳进行公转,同时自身进行着自转。同样的,月亮在围绕地球旋转的同时自身也在自转。为了问题的简单化,假设太阳处于固定位置,且自身只有自转,只考虑太阳、地球、月亮三者的相互影响,请基于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程序运行结果
文章来源:https://www.toymoban.com/news/detail-515396.html
运行结果视频链接:MATLAB-实现太阳、地球、月亮三者之间运转关系的模拟-CSDN直播文章来源地址https://www.toymoban.com/news/detail-515396.html
到了这里,关于MATLAB-实现太阳、地球、月亮三者之间运转关系的模拟的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!