sascha@360: package de.intevation.gnv.math; sascha@360: sascha@360: import java.awt.geom.Point2D; sascha@360: sascha@360: import de.intevation.gnv.math.LinearToMap.Metrics; sascha@360: import de.intevation.gnv.math.LinearToMap.Interpolator; sascha@360: sascha@360: /** sascha@360: * @author Sascha L. Teichmann sascha@360: */ sascha@360: public final class LinearMetrics sascha@360: implements Metrics sascha@360: { sascha@360: public static final Metrics INSTANCE = sascha@360: new LinearMetrics(); sascha@360: sascha@360: public static final class LinearInterpolator sascha@360: implements Interpolator sascha@360: { sascha@360: private double mx; sascha@360: private double bx; sascha@360: private double my; sascha@360: private double by; sascha@360: sascha@360: public LinearInterpolator(Point2D p1, Point2D p2) { sascha@360: sascha@360: /* sascha@360: I) p1.x = 0*m + bx sascha@360: II) p2.x = 1*m + bx sascha@360: sascha@360: bx = p1.x sascha@360: sascha@360: p2.x = m + p1.x sascha@360: sascha@360: mx = p2.x - p1.x sascha@360: */ sascha@360: sascha@360: bx = p1.getX(); sascha@360: mx = p2.getX() - bx; sascha@360: sascha@360: by = p1.getY(); sascha@360: my = p2.getY() - by; sascha@360: } sascha@360: sascha@360: public void interpolate(double t, Point2D v) { sascha@360: double x = t*mx + bx; sascha@360: double y = t*my + by; sascha@360: v.setLocation(x, y); sascha@360: } sascha@360: } // class LinearInterpolator sascha@360: sascha@360: private LinearMetrics() { sascha@360: } sascha@360: sascha@360: public double distance(Point2D p1, Point2D p2) { sascha@360: return p1.distance(p2); sascha@360: } sascha@360: sascha@360: public Interpolator getInterpolator(Point2D p1, Point2D p2) { sascha@360: return new LinearInterpolator(p1, p2); sascha@360: } sascha@360: } sascha@360: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8: