例题:宇宙中存在着诸多的天体,以行星地球为例,地球绕着太阳进行公转,同时自身进行着自转。同样的,月亮在围绕地球旋转的同时自身也在自转。为了问题的简单化,假设太阳处于固定位置,且自身只有自转,只考虑太阳、地球、月亮三者的相互影响,请基于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'); drawnowend
MATLAB程序运行结果
运行结果视频链接:MATLAB-实现太阳、地球、月亮三者之间运转关系的模拟-CSDN直播