About the determination of cartesian coordinates from an Orbit Object

Hi orekit community,

I was wondering if someone can explain me how exactly the cartesian coordinates are calculated when using the getPVCoordinates on an orbit object.

In fact let’s say I create an orbit with (assuming I import the good tools to do that) :

a, e ,i, pa, raaan, M = 25508012.1, 0.0012523, 1.123415, 4.91524, 4.00556, 5.887666
mu = 398600441800000.0
Iers = IERSConventions.IERS_2010
utc = TimeScalesFactory.getUTC()
date = AbsoluteDate(1992, 11, 6, 10, 33, 43. 64, utc)
inertialFrame = FramesFactory.getCIRF(Iers,True)
orbit = KeplerianOrbit(a,e,i,pa,raan,M, PositionAngle.MEAN, inertialFrame, date, mu)
PV = orbit.getPVCoordinates(date,inertialFrame)
Pos = PV.getPosition()
X,Y,Z = Pos.getX(), Pos.getY() , Pos.getZ()

How is exactly calculated the Vector3D while doing .getPostion() from the initial Orbit defined ?

I am asking this question because the results I have with my current code shows that the cartesian coordinates I have after a DSST propagation are wrong, even if the propagation results are good.

Thank you in advance,

Hi @JulienL,

Sorry for the delay.

They are calculated in the method KeplerianOrbit.computePVWithouA().
The equations here can be found for example in books “Satellite Orbits” by O. Montenbruck and E. Gill, or “Fundamentals of Astrodynamics and Applications” by D. Vallado, or any book on space mechanics.
I’ve found an online resource here (by Pr René Schwarz from the University of Merseburg) detailing the Keplerian to Cartesian transformation (in the elliptic case).

Could you give some more details about that?
I sincerely doubt that the Keplerian → Cartesian transformation is wrong in Orekit (it’s been validated extensively) but there may be another problem behind this.