Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/math/LinearMetrics.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 | aec85d00d82c |
children | 6cff63d0c434 |
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/LinearMetrics.java Fri Sep 28 12:13:53 2012 +0200 @@ -0,0 +1,59 @@ +package de.intevation.gnv.math; + +import com.vividsolutions.jts.geom.Coordinate; + +/** + * @author Sascha L. Teichmann + */ +public final class LinearMetrics +implements Metrics +{ + public static final Metrics INSTANCE = + new LinearMetrics(); + + public static final class LinearInterpolator + implements Interpolator + { + private double mx; + private double bx; + private double my; + private double by; + + public LinearInterpolator(Coordinate p1, Coordinate p2) { + + /* + I) p1.x = 0*m + bx + II) p2.x = 1*m + bx + + bx = p1.x + + p2.x = m + p1.x + + mx = p2.x - p1.x + */ + + bx = p1.x; + mx = p2.x - bx; + + by = p1.y; + my = p2.y - by; + } + + public void interpolate(double t, Coordinate v) { + v.x = t*mx + bx; + v.y = t*my + by; + } + } // class LinearInterpolator + + private LinearMetrics() { + } + + public double distance(Coordinate p1, Coordinate p2) { + return p1.distance(p2); + } + + public Interpolator getInterpolator(Coordinate p1, Coordinate p2) { + return new LinearInterpolator(p1, p2); + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8: