, поэтому у меня есть эта симуляция планеты, в которой я хотел бы построить положение планет (так что непрерывная линия, которая следует за планетами при движении) и попыталась использовать так много разных вариаций of linepec. Я считаю, что проблема может заключаться в том, что я сначала использую функцию «set (h ..)», а затем рисую в цикле, но я не уверен.График Matlab исчезает при добавлении linepec
clc, close all, clear all
%% Constants
m_sun=1.9891*10^(30); % Sun mass KG
m_earth=5.972*10^(24);
G=1.4879*10^(-34); %Gravitational constant %AU^3/(kg*day^2) %Because JPL Data..
n=36500; %1 year is 36.5 because 1 step is 10 days so this is 10 years.
dt=1; %Stepsize is by the DATA from JPL aut. set to 10 days (dt=1 aka 10 days)
%% Start pos. and velocity for Sun, Mercury, Venus, Earth and Moon
psol=[0 0 0];
%% Mercury
x_mercury=-1.433719457930228E-01; %AU
y_mercury=2.837093715285307E-01; %AU
z_mercury=3.633570612044031E-02; %AU
vx_mercury=-3.076848842366683E-02; %AU/Day
vy_mercury=-1.162353364156454E-02; %AU/Day
vz_mercury=1.872970822663991E-03;
v0_mercury=[vx_mercury vy_mercury vz_mercury];
p0_mercury=[x_mercury y_mercury z_mercury];
v_mercury=v0_mercury;
p_mercury=p0_mercury;
%% Venus
x_venus=4.673243997906552E-01; %AU
y_venus=5.508231287051383E-01; %AU
z_venus=-1.941467305848078E-02; %AU
vx_venus=-1.548526759260772E-02; %AU/Day
vy_venus=1.299852601837024E-02; %AU/Day
vz_venus=1.071832461568199E-03; %AU/Day
v0_venus=[vx_venus vy_venus vz_venus];
p0_venus=[x_venus y_venus z_venus];
v_venus=v0_venus;
p_venus=p0_venus;
%% Earth
x_jord=-1.796136519182077E-01; %AU
y_jord=9.667949205028737E-01; %AU
z_jord=-3.668730384613077E-05; %AU
vx_jord=-1.720038360546182E-02; %AU/Day
vy_jord=-3.211186215649903E-03; %AU/Day
vz_jord=7.927770738232715E-07; %AU/Day
v0_jord=[vx_jord vy_jord vz_jord];
p0_jord=[x_jord y_jord z_jord];
v_jord=v0_jord;
p_jord=p0_jord;
%% Moon
x_moon=1.735515971173234E-03; %AU
y_moon=-1.954900859093033E-03; %AU
z_moon=9.023023109649464E-05; %AU
vx_moon=4.195999130374965E-04; %AU/Day
vy_moon=4.002519066694706E-04; %AU/Day
vz_moon=-4.849066257645466E-05; %AU/Day
v0_moon=[vx_moon vy_moon vz_moon];
p0_moon=[x_moon y_moon z_moon];
v_moon=v0_moon;
p_moon=p0_moon;
%% Calculations
hold on
h_sun = plot3(0,0,0,'y.','markersize',80);
h_mercury = plot3(1,1,1,'k.','markersize',35);
h_venus = plot3(2,2,2,'m.','markersize',45);
h_earth = plot3(3,3,3,'b.','markersize',55);
h_moon = plot3(4,4,4,'r.','markersize',25);
for step=1:n
%% Mercury
r_vekt_mercury=-p_mercury;
r_mercury=sqrt(x_mercury^2 + y_mercury^2 + z_mercury^2); %Radius in AU
a_mercury=((G*m_sun)/((r_mercury)^3))*r_vekt_mercury;
v_mercury=a_mercury*dt+v_mercury;
p_mercury=v_mercury*dt+p_mercury;
%% Venus
r_vekt_venus=-p_venus;
r_venus=sqrt(x_venus^2 + y_venus^2 + z_venus^2); %Radius in AU
a_venus=((G*m_sun)/((r_venus)^3))*r_vekt_venus;
v_venus=a_venus*dt+v_venus;
p_venus=v_venus*dt+p_venus;
%% Jord
r_vekt_jord=-p_jord;
r_jord=sqrt(x_jord^2 + y_jord^2 + z_jord); %Radius in AU
a_jord=((G*m_sun)/((r_jord)^3))*r_vekt_jord;
v_jord=a_jord*dt+v_jord;
p_jord=v_jord*dt+p_jord;
% %% Moon
%r_vekt_moon=psol-p_moon;
r_vekt_moon_earth=p_jord-p_moon;
r_moon=sqrt(x_moon^2 + y_moon^2 + z_moon^2); %Radius in AU
a_moon=((G*m_earth)/((r_moon)^3))*r_vekt_moon_earth;
v_moon=a_moon*dt+v_moon;
p_moon=v_moon*dt+p_moon;
set(h_sun,'XData',psol(1),'YData',psol(2),'ZData',psol(3));
set(h_mercury,'XData',p_mercury(1),'YData',p_mercury(2),'ZData',p_mercury(3));
set(h_venus,'XData',p_venus(1),'YData',p_venus(2),'ZData',p_venus(3));
set(h_earth,'XData',p_jord(1),'YData',p_jord(2),'ZData',p_jord(3));
set(h_moon,'XData',p_moon(1),'YData',p_moon(2),'ZData',p_moon(3));
xlabel('AU');
ylabel('AU');
zlabel('AU');
axis([-2 2 -2 2 -2 2]);
drawnow;
hold off
end
Так что, если вы посмотрите перед циклом вы увидите «набор (...)» функцию я упоминал, и в конце цикла является построение. Если я изменю i.e. @ h_mercury из 'k.' к 'k' планета полностью исчезает. Если я изменю его на '-.' он также исчезает. Я пробовал бесчисленные вариации, и планета исчезает, или это дает мне ошибку. Я просмотрел раздел помощи @matlabs в пределах 2-го участка, 3d-графика, линии и т. Д. И до сих пор не нашел решения!
Я надеюсь, что кто-то может помочь мне понять это как можно быстрее!
Благодаря
Так что я попытался код, который вы написали, но он только добавил линия от солнца до планеты (я только пытался с Меркурием посмотреть, как она будет выглядеть), которая следит за планетой вокруг чего-то вроде моста от планеты до солнца. Что является причиной этого? А что касается другого решения, которое вы написали, я бы затем добавил plot3 (...) после набора (...) aka непосредственно перед концом цикла? – Rida
Я сделал небольшую ошибку. Мои извинения. Я отредактировал свое решение и протестировал его здесь, теперь он должен работать. – Florian
Точно! Я попытаюсь скопировать то, что вы создали, и добавить его ко всем моим планетам! Если вы хотите объяснить немного дальше, я бы хотел попытаться понять, что делает ваш код, а не просто скопировать его! – Rida