Hello!
I’ve got a small difference in altitude returned by OneAxisEllipsoid.transform method, depending on a calls history. If I call fu1() before fu2(), altitude changes by ~1e-14 relatively. It’s not a big deal itself, but lead to fluctuation in test results depending on run order.
Can you please comment this case?
import orekit_jpype
orekit_jpype.initVM()
orekit_jpype.pyhelpers.setup_orekit_data()
from org.hipparchus.geometry.euclidean.threed import Vector3D
from org.orekit.time import AbsoluteDate, TimeScalesFactory
from org.orekit.bodies import OneAxisEllipsoid
from org.orekit.frames import Frame, FramesFactory
from org.orekit.utils import Constants, IERSConventions
def get_wgs84_frame() -> Frame:
return FramesFactory.getITRF(IERSConventions.IERS_2010, True)
def get_j2000_frame() -> Frame:
return FramesFactory.getEME2000()
def get_earth_ellipsoid_wgs84() -> OneAxisEllipsoid:
return OneAxisEllipsoid(Constants.WGS84_EARTH_EQUATORIAL_RADIUS, Constants.WGS84_EARTH_FLATTENING, get_wgs84_frame())
def fu1():
days_from_j2000 = 101.23456789
date = AbsoluteDate(2000, 1, 1, 12, 0, 0., TimeScalesFactory.getUTC()).shiftedBy(days_from_j2000 * 24 * 3600)
frame_j2000 = get_j2000_frame()
frame_wgs84 = get_wgs84_frame()
frame_wgs84.getTransformTo(frame_j2000, date)
def fu2():
date = AbsoluteDate(2000, 3, 20, 12, 0, 0., TimeScalesFactory.getUTC())
point_j2000 = Vector3D(3914350.32429523, 5803263.00788529, 0.)
ellipsoid_wgs84 = get_earth_ellipsoid_wgs84()
frame_j2000 = get_j2000_frame()
point_wgs84_geodetic = ellipsoid_wgs84.transform(point_j2000, frame_j2000, date)
assert point_wgs84_geodetic.getAltitude() == 621863.0000077309
# uncomment fu1() and you'll get assertion error in fu2()
#fu1()
fu2()