From a97a824e5849fe39cd1ea0cb382f2eb239ba280c Mon Sep 17 00:00:00 2001 From: Luc Maisonobe <luc@orekit.org> Date: Sat, 21 Mar 2015 17:51:31 +0100 Subject: [PATCH] Added a protection against out of bound initial guesses. --- .../rugged/linesensor/SensorMeanPlaneCrossing.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossing.java b/src/main/java/org/orekit/rugged/linesensor/SensorMeanPlaneCrossing.java index c1e9530c..59fdd13c 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 = -- GitLab