nearestSegmentPoint static method

LatLong nearestSegmentPoint(
  1. double startX,
  2. double startY,
  3. double endX,
  4. double endY,
  5. double pointX,
  6. double pointY,
)

Returns a point on the segment nearest to the specified point.

libGDX (Apache 2.0)

Implementation

static LatLong nearestSegmentPoint(double startX, double startY, double endX, double endY, double pointX, double pointY) {
  double xDiff = endX - startX;
  double yDiff = endY - startY;
  double length2 = xDiff * xDiff + yDiff * yDiff;
  if (length2 == 0) return LatLong(startY, startX);
  double t = ((pointX - startX) * (endX - startX) + (pointY - startY) * (endY - startY)) / length2;
  if (t < 0) return LatLong(startY, startX);
  if (t > 1) return LatLong(endY, endX);
  return LatLong(startY + t * (endY - startY), startX + t * (endX - startX));
}