]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/data/DoubleRange.java
Version 16, February 2014
[GpsPrune.git] / tim / prune / data / DoubleRange.java
index b7d4771b5ce28c8d6a54fdffd077224a77cf16c1..3f252eed6cd2bcfe00bcdc272c2f1f82404dcbba 100644 (file)
@@ -10,6 +10,30 @@ public class DoubleRange
        private double _min = 0.0, _max = 0.0;
 
 
+       /** Empty constructor, cleared to zeroes */
+       public DoubleRange() {}
+
+       /**
+        * Constructor giving two initial values
+        * @param inValue1 first value
+        * @param inValue2 second value
+        */
+       public DoubleRange(double inValue1, double inValue2)
+       {
+               addValue(inValue1);
+               addValue(inValue2);
+       }
+
+       /**
+        * Clear for a new calculation
+        */
+       public void clear()
+       {
+               _min = _max = 0.0;
+               _empty = true;
+       }
+
+
        /**
         * Add a value to the range
         * @param inValue value to add
@@ -21,6 +45,18 @@ public class DoubleRange
                _empty = false;
        }
 
+       /**
+        * Combine this range with another one
+        * @param inOtherRange other range to add to this one
+        */
+       public void combine(DoubleRange inOtherRange)
+       {
+               if (inOtherRange != null && inOtherRange.getRange() > 1.0)
+               {
+                       addValue(inOtherRange.getMinimum());
+                       addValue(inOtherRange.getMaximum());
+               }
+       }
 
        /**
         * @return true if data values were found
@@ -47,4 +83,30 @@ public class DoubleRange
        {
                return _max;
        }
+
+       /**
+        * @return range, as maximum - minimum
+        */
+       public double getRange()
+       {
+               return _max - _min;
+       }
+
+       /**
+        * @return mid value, halfway between min and max
+        */
+       public double getMidValue()
+       {
+               return (_max + _min) / 2.0;
+       }
+
+       /**
+        * Copy this range into a new object, which can then be modified without changing this one
+        * @return deep copy of this object
+        */
+       public DoubleRange copy()
+       {
+               if (_empty) return new DoubleRange();
+               return new DoubleRange(_min, _max);
+       }
 }