/******************************************************************************* * Copyright (c) 2014 Open Door Logistics (www.opendoorlogistics.com) * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at http://www.gnu.org/licenses/lgpl.txt ******************************************************************************/ package com.opendoorlogistics.core.utils; final public class DoubleRange { private double min = +Double.MAX_VALUE; private double max = -Double.MAX_VALUE; public DoubleRange(){} public DoubleRange(double min, double max){ this.min =min; this.max = max; } public DoubleRange(double[]dbls){ for(double d:dbls){ add(d); } } public void add(Double d){ if(d!=null){ add((double)d); } } public void add(double d){ min = Math.min(d, min); max = Math.max(d, max); } public double getLength(){ return max - min; } public double getCentre(){ return 0.5*(max + min); } public void multiply(double d){ if(isValid()){ double centre = 0.5*(min + max); double range = max - min; range *= d; min = centre - 0.5*range; max = centre + 0.5*range; } } public boolean isValid(){ return min <= max; } public double getMin() { return min; } public void setMin(double min) { this.min = min; } public double getMax() { return max; } public void setMax(double max) { this.max = max; } }