m1=1.5e30;%1号星的质量-红
m2=3.01e30;%2号星的质量-蓝
m3=3.5e30;%3号星的质量-绿
h1=animatedline('MaximumNumPoints',2000,'color','r');%动画
h2=animatedline('MaximumNumPoints',2000,'color','b');
h3=animatedline('MaximumNumPoints',2000,'color','g');
G=6.67e-11;%引力常量
v1=[20,40];%三颗恒星的初始速度
v2=[-30,20];
v3=[27,-30];
pos1=[0,1.5e18];%三颗恒星的坐标
pos2=[1.5e18,3e18];
pos3=[3e18,0];
delt=0.1;%观测时间间隔
for i=1:10000
addpoints(h1,pos1(1),pos1(2));
addpoints(h2,pos2(1),pos2(2));
addpoints(h3,pos3(1),pos3(2));
drawnow;
pos1=pos1+v1*delt;%更新位置
pos2=pos2+v2*delt;
pos3=pos3+v3*delt;
r12=normest(pos2-pos1);
r23=normest(pos3-pos2);
r31=normest(pos1-pos3);
f12_len=G*m1*m2/(r12^2);
f23_len=G*m2*m3/(r23^2);
f31_len=G*m3*m1/(r31^2);
f12_dir=(pos2-pos1)/r12;%计算万有引力
f23_dir=(pos3-pos2)/r23;
f31_dir=(pos1-pos3)/r31;
f12=f12_len*f12_dir;
f23=f23_len*f23_dir;
f31=f31_len*f31_dir;
v1=v1+(f12-f31)*delt;
v2=v2+(f23-f12)*delt;
v3=v3+(f31-f23)*delt;
end
clear;