diff --git a/src/main/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossing.java b/src/main/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossing.java index c1e9530c20f04946b4237fb5233139fe7eb6bf17..59fdd13c21c4d3bb5de795eaefac1ac2c48469c7 100644 --- a/src/main/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossing.java +++ b/src/main/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossing.java @@ -483,6 +483,14 @@ public class SensorMeanPlaneCrossing { throws RuggedException { try { + // safety check + final double startValue; + if (initialGuess < minLine || initialGuess > maxLine) { + startValue = midLine; + } else { + startValue = initialGuess; + } + final UnivariateSolver solver = new BracketingNthOrderBrentSolver(accuracy, 5); double crossingLine = solver.solve(maxEval, new UnivariateFunction() { /** {@inheritDoc} */ @@ -498,7 +506,7 @@ public class SensorMeanPlaneCrossing { throw new RuggedExceptionWrapper(re); } } - }, minLine, maxLine, initialGuess); + }, minLine, maxLine, startValue); final AbsoluteDate date = sensor.getDate(crossingLine); final FieldVector3D<DerivativeStructure> targetDirection =