private static double calcLineSegmentDistanceIndicator(final double x, final double y, final Link link) {
double fx = link.getFromNode().getCoord().getX();
double fy = link.getFromNode().getCoord().getY();
double lineDX = link.getToNode().getCoord().getX() - fx;
double lineDY = link.getToNode().getCoord().getY() - fy;
if ((lineDX == 0.0) && (lineDY == 0.0)) {
return calcDistanceIndicator(fx, fy, x, y);
}
double u = ((x - fx)*lineDX + (y - fy)*lineDY) / (lineDX*lineDX + lineDY*lineDY);
if (u <= 0) {
return calcDistanceIndicator(fx, fy, x, y);
}
if (u >= 1) {
return calcDistanceIndicator(fx + lineDX, fy + lineDY, x, y);
}
return calcDistanceIndicator(fx + u*lineDX, fy + u*lineDY, x, y);
}