MATLAB How to plot an orbit around the Earth in MATLAB

AI Thread Summary
The discussion focuses on plotting an orbit around Earth using MATLAB. The initial code provided successfully plots a 3D orbit but does not include a representation of Earth. A revised version of the code is shared, which incorporates a sphere to represent Earth by using the `sphere` function and adjusting its dimensions to match Earth's radius. The updated code maintains the orbital calculations using the `ode45` function to solve the satellite's motion equations. The final output effectively visualizes both the satellite's orbit and the Earth, achieving the desired result. The user confirms that the revised code works as intended.
saeede-
Messages
8
Reaction score
0
Hi. can you help me to plot orbit around Earth with sphere in MATLAB?
I wrote the code that plot 3D orbit but without earth.

the code:
Matlab:
clear all
close all
clc

R=6371e+3;
r0=3e+5;
p0=[R+r0;0;0;0;10000;0];

[t,p]=ode45(@sattelite,[0,12000],p0);
xout=p(:,1);
yout=p(:,2);
zout=p(:,3);
vx=p(:,4);
vy=p(:,5);
vz=p(:,6)

plot3(xout,yout,zout)

function dp=sattelite(t,p)
%%p=[x position;y position;z position;x velocity(vx);y velocity(vy);z velocity(vz)];
G=6.67e-11;
Me=5.972e+24;
m=50;
mu=(Me+m)*G;
R=6371e+3;
r0=3e+5;

r=sqrt(p(1)^2+p(2)^2+p(3)^2);
dp=zeros(6,1);
dp(1)=p(4);
dp(2)=p(5);
dp(3)=p(6);
dp(4)=-(mu/r^3)*p(1);
dp(5)=-(mu/r^3)*p(2);
dp(6)=-(mu/r^3)*p(3);
end
 
Physics news on Phys.org
I woud do it like this:
[CODE lang="matlab" title="Matlab"]
clear all
close all
clc

R=6371e+3;
r0=3e+5;
p0=[R+r0;0;0;0;10000;0];

[t,p]=ode45(@sattelite,[0,12000],p0);
xout=p(:,1);
yout=p(:,2);
zout=p(:,3);
vx=p(:,4);
vy=p(:,5);
vz=p(:,6);

[X,Y,Z] = sphere;
X = X*R;
Y = Y*R;
Z = Z*R;
surf(X,Y,Z);
hold on

plot3(xout,yout,zout)
axis equal vis3d

function dp=sattelite(t,p)
%%p=[x position;y position;z position;x velocity(vx);y velocity(vy);z velocity(vz)];
G=6.67e-11;
Me=5.972e+24;
m=50;
mu=(Me+m)*G;
R=6371e+3;
r0=3e+5;

r=sqrt(p(1)^2+p(2)^2+p(3)^2);
dp=zeros(6,1);
dp(1)=p(4);
dp(2)=p(5);
dp(3)=p(6);
dp(4)=-(mu/r^3)*p(1);
dp(5)=-(mu/r^3)*p(2);
dp(6)=-(mu/r^3)*p(3);
end[/CODE]
 
Arjan82 said:
I woud do it like this:
[CODE lang="matlab" title="Matlab"]
clear all
close all
clc

R=6371e+3;
r0=3e+5;
p0=[R+r0;0;0;0;10000;0];

[t,p]=ode45(@sattelite,[0,12000],p0);
xout=p(:,1);
yout=p(:,2);
zout=p(:,3);
vx=p(:,4);
vy=p(:,5);
vz=p(:,6);

[X,Y,Z] = sphere;
X = X*R;
Y = Y*R;
Z = Z*R;
surf(X,Y,Z);
hold on

plot3(xout,yout,zout)
axis equal vis3d

function dp=sattelite(t,p)
%%p=[x position;y position;z position;x velocity(vx);y velocity(vy);z velocity(vz)];
G=6.67e-11;
Me=5.972e+24;
m=50;
mu=(Me+m)*G;
R=6371e+3;
r0=3e+5;

r=sqrt(p(1)^2+p(2)^2+p(3)^2);
dp=zeros(6,1);
dp(1)=p(4);
dp(2)=p(5);
dp(3)=p(6);
dp(4)=-(mu/r^3)*p(1);
dp(5)=-(mu/r^3)*p(2);
dp(6)=-(mu/r^3)*p(3);
end[/CODE]
oh.. thanks. it works.
 

Similar threads

Replies
9
Views
5K
Replies
7
Views
3K
Replies
1
Views
8K
Replies
12
Views
4K
Replies
4
Views
3K
Replies
6
Views
2K
Replies
1
Views
3K
Back
Top