diff gnv-artifacts/src/main/java/de/intevation/gnv/math/LinearFunction.java @ 433:828df3ddb758

Added interpolation capabilities along z axis to XYColumns. gnv-artifacts/trunk@481 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 23 Dec 2009 12:20:25 +0000
parents 25e4724aa504
children d9d933e06875
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/math/LinearFunction.java	Wed Dec 23 09:45:40 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/math/LinearFunction.java	Wed Dec 23 12:20:25 2009 +0000
@@ -4,6 +4,8 @@
 
 import org.apache.commons.math.FunctionEvaluationException;
 
+import org.apache.commons.math.analysis.UnivariateRealFunction;
+
 /**
  *  @author Sascha L. Teichmann
  */
@@ -12,6 +14,31 @@
 {
     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() {
     }
 

http://dive4elements.wald.intevation.org