Hi,
I’ve created a detector like so:
It doesn’t go in the handler, so I’m wondering if something is wrong here.
I simplified it so it has 4 points and I put a high number on the sampling step to no avail
Frame earthFrame = FramesFactory.getITRF(IERSConventions.IERS_2010, true);
OneAxisEllipsoid earth = new OneAxisEllipsoid(
WGS84_EARTH_EQUATORIAL_RADIUS,
WGS84_EARTH_FLATTENING,
earthFrame);
Frame satelliteFrame = FramesFactory.getGCRF();
AttitudeProvider pointing = new NadirPointing(satelliteFrame, earth);
SimpleDateFormat sdf =
new SimpleDateFormat("dd-MM-yyyy HH:mm:ss.SSS Z");
Date dateSatelliteInitialDate = sdf.parse("01-01-2021 00:00:00.000 UTC");
AbsoluteDate satelliteInitialDate =
new AbsoluteDate(dateSatelliteInitialDate, TimeScalesFactory.getUTC());
Orbit initialOrbit = new KeplerianOrbit(
EIGEN5C_EARTH_EQUATORIAL_RADIUS + 0.5 * (800e3), // 800e3 = 2*perigee
(400.1e3-400e3)/(400.1e3+400e3)), // (apogee - perigee) / (apogee + perigee)
FastMath.toRadians(90),
FastMath.toRadians(0)
FastMath.toRadians(0),
FastMath.toRadians(0),
PositionAngle.TRUE,
satelliteFrame,
satelliteInitialDate,
EIGEN5C_EARTH_MU
);
Propagator propagator = new EcksteinHechlerPropagator(
initialOrbit,
pointing,
25.0,
EIGEN5C_EARTH_EQUATORIAL_RADIUS,
EIGEN5C_EARTH_MU,
EIGEN5C_EARTH_C20,
EIGEN5C_EARTH_C30,
EIGEN5C_EARTH_C40,
EIGEN5C_EARTH_C50,
EIGEN5C_EARTH_C60
);
// this values are computed before
DoubleDihedraFieldOfView imagerFieldOfView = new DoubleDihedraFieldOfView(Vector3D.MINUS_K, Vector3D.PLUS_I, 0.02742857132361516, Vector3D.PLUS_J, 0.03428571415451895, 0);
double sampling_step = 100000. ;
double hyperplaneThickness = 1.0e-10;
GeodeticPoint[] geodeticPointArray = new GeodeticPoint[4];
geodeticPointArray[0] = new GeodeticPoint(FastMath.toRadians(71.7069d), FastMath.toRadians(2.6043d), 500);
geodeticPointArray[1] = new GeodeticPoint(FastMath.toRadians(1.5240d), FastMath.toRadians(2.6043d), 500);
geodeticPointArray[2] = new GeodeticPoint(FastMath.toRadians(1.5240d), FastMath.toRadians(125.3188d), 500);
geodeticPointArray[3] = new GeodeticPoint(FastMath.toRadians(71.7069d), FastMath.toRadians(125.3188d), 500);
SphericalPolygonsSet targetLand = EllipsoidTessellator.buildSimpleZone(hyperplaneThickness, geodeticPointArray);
FootprintOverlapDetector targetLandDetector = new FootprintOverlapDetector(imagerFieldOfView , earth, targetLand, sampling_step).withHandler((s, detector, increasing) -> {
targetLandDetectorInfo.put(s.getDate(), (increasing ? "starts " : "ends"));
return Action.CONTINUE;
});
propagator.addEventDetector(targetLandDetector);