function coe=coe_from_sv(R,V)
% mu-引力参数(km^3/s^2)
% R-位置矢量
% V-速度矢量
% r,v-R,V的模
% H-角动量
% h-角动量的mo
% incl-轨道倾角
% N-节点向量
% n-N的模
% cp-N与R的叉积
% RA-升交点赤经
% E-偏心矢量
% e-E的模
% eps-偏心率零极限
% w-近地点幅角
% TA-真近点角
% a-半长轴
% coe-轨道根数[h e RA incl w TA a]
global mu;
eps=1.e-10;
r=norm(R);
v=norm(V);
vr=dot(R,V)/r;
H=cross(R,V);
h=norm(H);
incl=acos(H(3)/h);
N=cross([0 0 1],H);
n=norm(N);
if n~=0
RA=acos(N(1)/n);
if N(2)<0
RA=2*pi-RA;
end
else
RA=0;
end
E=1/mu*((v^2-mu/r)*R-r*vr*V);
e=norm(E);
if n~=0
if e>eps
w=acos(dot(N,E)/n/e);
if E(3)<0
w=2*pi-w;
end
else
w=0;
end
else
w=0;
end
if e>eps
TA=acos(dot(E,R)/e/r);
if vr<0
TA=2*pi-TA;
end
else
cp=cross(N,R);
if cp(3)>=0
TA=acos(dot(N,R)/n/r);
else
TA=2*pi-acos(dot(N,R)/n/r);
end
end
a=h^2/mu/(1-e^2);
coe=[h e RA incl w TA a];
评论0