Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/math/LinearFunction.java @ 657:af3f56758f59
merged gnv-artifacts/0.5
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Fri, 28 Sep 2012 12:13:53 +0200 |
parents | d9d933e06875 |
children | 9a828e5a2390 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/math/LinearFunction.java Fri Sep 28 12:13:53 2012 +0200 @@ -0,0 +1,57 @@ +package de.intevation.gnv.math; + +import org.apache.commons.math.optimization.fitting.ParametricRealFunction; + +import org.apache.commons.math.FunctionEvaluationException; + +import org.apache.commons.math.analysis.UnivariateRealFunction; + +/** + * @author Sascha L. Teichmann (sascha.teichmann@intevation.de) + */ +public class LinearFunction +implements ParametricRealFunction +{ + public static final LinearFunction INSTANCE = new LinearFunction(); + + public static class Univariate + implements UnivariateRealFunction + { + protected double m; + protected double b; + + public Univariate() { + } + + public Univariate(double x1, double y1, double x2, double y2) { + if (y1 == y2) { + m = 0d; + b = (x1 + x2)*0.5d; + } + else { + m = (x1 - x2)/(y1 - y2); + b = y1 - m*x1; + } + } + + public double value(double x) { + return m*x + b; + } + } // class Univariate + + public LinearFunction() { + } + + public double value(double x, double [] parameters) + throws FunctionEvaluationException + { + return x*parameters[0] + parameters[1]; + } + + public double [] gradient(double x, double [] parameters) + throws FunctionEvaluationException + { + return new double [] { x, 1f }; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :