Relative vector representation


I need to represent both a point on a one axis ellipsoid/bodyshape’s surface and a satellite in orbit as 3D vectors relative to the centre of the one axis ellipsoid/bodyshape. Is this possible?

Any help would be greatly appreciated.

Hi @jarryd,

Welcome to the Orekit forum !

When the OneAxisEllipsoid body is created, it is attached to a frame (usually ITRF for the Earth).

Afterwards you can use the getTransformTo method from Frame class to convert any 3D vector in any frame into you body attached frame.
Or you can use the transform method from OneAxisEllipsoid to convert a vector into a geodetic point or the other way around.

Does that help you ?
If not, could you please elaborate on what you want to do ?


1 Like

Thanks for your reply Maxime.

That does help a little. Basically what I’m trying to do is work out whether a satellite of known position orbiting the Earth can be seen from a lat/long position on the Earths surface. I considered using relative positional vectors (as mentioned in the post) but have also considered using a GroundFieldOfViewDetector to basically check whether the satellite moves through the positions field of view within a small time frame.

In your opinion, which would be the best way to approach this?

Thank you!



Maybe you can try to use an ElevationDetector? The goal of this detector is to check satellite visibility from a ground station defined by its lat/long position and its body shape.
Here an example on how to initialize an elevation detector:

        // Earth and frame
        double ae =  6378137.0; // equatorial radius in meter
        double f  =  1.0 / 298.257223563; // flattening
        Frame itrf = FramesFactory.getITRF(IERSConventions.IERS_2010, true); // terrestrial frame at an arbitrary date
        BodyShape earth = new OneAxisEllipsoid(ae, f, itrf);
        GeodeticPoint point = new GeodeticPoint(latInRadians,
        TopocentricFrame topo = new TopocentricFrame(earth, point, "Gstation");
        ElevationDetector detector = new ElevationDetector(topo);

Then, the detector can be added to your orbit propagator. You can also add to the detector an EventHandler in order to perform some actions during the event detection (print the detection date, etc).


Thank you Bryan,

That is an immense help. I should be able to use this approach.

Thanks again to you and Maxime.