Hi,
> Has someone a working algorithm to get the shortest distance from a
> node to a
> way?
Assume that "begin" and "end" are the nodes defining your way, and
"point" is the point from which you want to measure distance, and
assume all coordinates are given as instances of class
"EastNorth" (i.e. in projected coordiantes with an "easting" and a
"northing" value), then the point on the way for which the distance
is shortest can be computed like this:
double u = ((point.east()-begin.east())*(end.east()-begin.east())
+ (point.north()-begin.north())*(end.north()-begin.north()))/
end.distanceSq(begin);
EastNorth nearest = new EastNorth(begin.east()+u*(end.east()-
begin.east()), begin.north()+u*(end.north()-begin.north()));
Then you only have to compute the distance between "nearest" and
"point":
double dist = Math.sqrt(nearest.distanceSq(point));
(distanceSq is just a method that returns (north1-north2)**2 + (east1-
east2)**2)
If you want all this to work on unprojected coordinates, i.e. lat/lon
values, then doing it *right* (i.e. doing it in a way that works even
if your way goes from Iceland to South Africa and your point is in
New Zealand) requires a *lot* more math.
Bye
Frederik
--
Frederik Ramm ## eMail [EMAIL PROTECTED] ## N49°00'09" E008°23'33"
_______________________________________________
dev mailing list
[email protected]
http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/dev