Hi,
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,
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 ?
Cheers,
Maxime
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!
Jarryd
Hi,
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,
longInRadians,
0.0);
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).
Bryan
Thank you Bryan,
That is an immense help. I should be able to use this approach.
Thanks again to you and Maxime.