Index: trunk/src/org/openstreetmap/josm/data/coor/Coordinate.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/coor/Coordinate.java	(revision 6165)
+++ trunk/src/org/openstreetmap/josm/data/coor/Coordinate.java	(revision 6166)
@@ -40,12 +40,50 @@
 
     /**
+     * Returns the euclidean distance from this {@code Coordinate} to a specified {@code Coordinate}.
+     * 
+     * @param coor the specified coordinate to be measured against this {@code Coordinate}
+     * @return the euclidean distance from this {@code Coordinate} to a specified {@code Coordinate}
+     * @since 6166
+     */
+    protected final double distance(final Coordinate coor) {
+        return distance(coor.x, coor.y);
+    }
+   
+    /**
+     * Returns the euclidean distance from this {@code Coordinate} to a specified coordinate.
+     * 
+     * @param px the X coordinate of the specified point to be measured against this {@code Coordinate}
+     * @param py the Y coordinate of the specified point to be measured against this {@code Coordinate}
+     * @return the euclidean distance from this {@code Coordinate} to a specified coordinate
+     * @since 6166
+     */
+    public final double distance(final double px, final double py) {
+        final double dx = this.x-px;
+        final double dy = this.y-py;
+        return Math.sqrt(dx*dx + dy*dy);
+    }
+   
+    /**
      * Returns the square of the euclidean distance from this {@code Coordinate} to a specified {@code Coordinate}.
      * 
      * @param coor the specified coordinate to be measured against this {@code Coordinate}
      * @return the square of the euclidean distance from this {@code Coordinate} to a specified {@code Coordinate}
+     * @since 6166
      */
-    public double distanceSq(final Coordinate coor) {
-        final double dx = this.x-coor.x;
-        final double dy = this.y-coor.y;
+    protected final double distanceSq(final Coordinate coor) {
+        return distanceSq(coor.x, coor.y);
+    }
+
+    /**
+     * Returns the square of euclidean distance from this {@code Coordinate} to a specified coordinate.
+     * 
+     * @param px the X coordinate of the specified point to be measured against this {@code Coordinate}
+     * @param py the Y coordinate of the specified point to be measured against this {@code Coordinate}
+     * @return the square of the euclidean distance from this {@code Coordinate} to a specified coordinate
+     * @since 6166
+     */
+    public final double distanceSq(final double px, final double py) {
+        final double dx = this.x-px;
+        final double dy = this.y-py;
         return dx*dx + dy*dy;
     }
Index: trunk/src/org/openstreetmap/josm/data/coor/EastNorth.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/coor/EastNorth.java	(revision 6165)
+++ trunk/src/org/openstreetmap/josm/data/coor/EastNorth.java	(revision 6166)
@@ -45,13 +45,23 @@
 
     /**
-     * Counts euclidean distance between this and other EastNorth.
+     * Returns the euclidean distance from this {@code EastNorth} to a specified {@code EastNorth}.
      * 
-     * @param en2 other EastNorth
-     * @return distance between this and other EastNorth
+     * @param en the specified coordinate to be measured against this {@code EastNorth}
+     * @return the euclidean distance from this {@code EastNorth} to a specified {@code EastNorth}
+     * @since 6166
      */
-    public double distance(final EastNorth en2) {
-        final double dx = this.x-en2.x;
-        final double dy = this.y-en2.y;
-        return Math.sqrt(dx*dx + dy*dy);
+    public double distance(final EastNorth en) {
+        return super.distance(en);
+    }
+   
+    /**
+     * Returns the square of the euclidean distance from this {@code EastNorth} to a specified {@code EastNorth}.
+     * 
+     * @param en the specified coordinate to be measured against this {@code EastNorth}
+     * @return the square of the euclidean distance from this {@code EastNorth} to a specified {@code EastNorth}
+     * @since 6166
+     */
+    public double distanceSq(final EastNorth en) {
+        return super.distanceSq(en);
     }
 
Index: trunk/src/org/openstreetmap/josm/data/coor/LatLon.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/coor/LatLon.java	(revision 6165)
+++ trunk/src/org/openstreetmap/josm/data/coor/LatLon.java	(revision 6166)
@@ -27,5 +27,4 @@
  */
 public class LatLon extends Coordinate {
-
 
     /**
@@ -298,15 +297,25 @@
 
     /**
-     * Counts euclidean distance between this and other LatLon.
+     * Returns the euclidean distance from this {@code LatLon} to a specified {@code LatLon}.
      * 
-     * @param ll2 other LatLon
-     * @return distance between this and other LatLon
-     */
-   public double distance(final LatLon ll2) {
-        final double dx = this.x-ll2.x;
-        final double dy = this.y-ll2.y;
-        return Math.sqrt(dx*dx + dy*dy);
-    }
-
+     * @param ll the specified coordinate to be measured against this {@code LatLon}
+     * @return the euclidean distance from this {@code LatLon} to a specified {@code LatLon}
+     * @since 6166
+     */
+    public double distance(final LatLon ll) {
+        return super.distance(ll);
+    }
+   
+    /**
+     * Returns the square of the euclidean distance from this {@code LatLon} to a specified {@code LatLon}.
+     * 
+     * @param ll the specified coordinate to be measured against this {@code LatLon}
+     * @return the square of the euclidean distance from this {@code LatLon} to a specified {@code LatLon}
+     * @since 6166
+     */
+    public double distanceSq(final LatLon ll) {
+        return super.distanceSq(ll);
+    }
+    
     @Override public String toString() {
         return "LatLon[lat="+lat()+",lon="+lon()+"]";
