PVCoordinatesProvider for deep sky objects

I’m a new Orekit user, I have a degree in Physics, but I’m not very expert in space dynamics. In any case I’m having fun with Orekit trying to study sources and tests. I’m using some predefined detectors and I would like to use a PVCoordinatesProvider implementation for deep sky objects or stars: is it possible? Can someone help me?
Thanks in advance!


Hi @Teo

Welcome to the Orekit forum.

I suggest you to use AbsolutePVCoordinates class to define the coordinates. This class is an a PVCoordinatesProvider implementation. The main advantage of this class is that PV coordinates can be extrapolated for both inertial and non-inertial frames. Please note that you have to use, at least, Orekit 10.0 to use this class.


Are you actually looking for PV coordinates or are you looking for some sort of angular coordinates type representation to do look angles? For solar system objects you can do either but for stars you’ll probably want to do angles only. What sort of analysis are you trying to perform?

Thanks for your answers.

I’m using a TLEPropagator with satellite TLE elements. Then I use an AngularSeparationDetector where I’d want to use:

  • as field “observer” the topocentric frame of my observation point on Earth
  • as field “beacon” the deep sky object PVCoordinatesProvider I’m asking for

If possible can you help me also with a short example of the AbsolutePVCoordinates or the implementation I need? I’ve already written the code for using propagator and detector in this case, I don’t know how write the deep sky object PVCoordinatesProvider implementation.

Thanks in advance again!

1 Like

Hi @Teo,

How is your deep sky object defined in the first place ? With right ascension/declination in an inertial frame ?
If so you can build a class that extends the PVCoordinatesProvider interface quite easily:

  • Assuming your deep space object is fixed (relative to Earth on a reasonable time span);
  • Giving it an arbitrary long distance D, say D = 1 light-year (a very close star :wink:)
  • Constructor takes the input inertial frame (J2000 here) and the two input angles and builds the constant PVCoordinates in J2000 using:
dsoPositionJ2000 = new Vector3D(right-ascension, declination).scalarMultiply(D);
dsoPVJ2000 = new PVCoordinates(dsoPosition, Vector3D.ZERO);
  • Then the getPVCoordinates(date, frame) does:
return new TimeStampedPVCoordinates(date, J2000.getTransformTo(frame, date).transformPVCoordinates(dsoPVJ2000));

Is it something like that you’re looking for ?
(Note that I haven’t tested the code; there may be typos in it).


Thanks for your answer, this is what I was looking for. I will try it!
Thanks again!