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