This is a JAVA port for the Nunges/Colombo Algorithm to find intersecting cones for a satellite's Field of View. The original MATLAB algorithm can be found here, and the paper here.
Define an ellipsoid (WGS84 in this example)
Ellipsoid e = new Ellipsoid(6378.137, 1 / 298.257223563, 3.986004418E14, 7.2921150E-5);
Define an OblateConic object associated with the ellipsoid e
OblateConic conic = new OblateConic(e);
Set the conic drawing method:
- 0: Sensor attached to the satellite
- 1: Horizon elevation threshold - bi-section method
- 2: Horizon elevation threshold - gradient descent method (original from the paper)
conic.setDrawingMethod(1);
Set the parameters for drawing method 0:
- HalfAperture: the sensor's conic half aperture in degrees
- Segments: the amount of segments of the polygon drawn on the surface of the ellipsoid
conic.setSensorParams(65, 50);
Set the parameters for drawing methods 1 and 2:
- Epsilon: elevation threshold over the horizon in degrees
- Tolerance: the tolerance to find epsilon
- Segments: the amount of segments of the polygon drawn on the surface of the ellipsoid
conic.setElevationParams(5, 1E-3, 50);
Obtain the list of x, y, z ECEF coordinates for a polygon on the ellipsoid, for a given x, y, z ECEF position in space, in Kilometers
List<double[]> coordinates = conic.drawConic(-990.945443, -5817.571039, 3334.217811);
Obtain the list of lat,lon coordinates in degrees for a polygon on the ellipsoid, for a given x, y, z ECEF position in space, in Kilometers
List<double[]> coordinates = conic.drawLLAConic(-990.945443, -5817.571039, 3334.217811);