distanceToSegmentSquared method

double distanceToSegmentSquared(
  1. Offset from,
  2. Offset to
)

The squared distance from this Offset to the closest point on the line segment between from and to.

Implementation

double distanceToSegmentSquared(Offset from, Offset to) {
  final segmentX = to.dx - from.dx;
  final segmentY = to.dy - from.dy;
  final pointX = dx - from.dx;
  final pointY = dy - from.dy;
  final lengthSquared = segmentX * segmentX + segmentY * segmentY;
  final along = pointX * segmentX + pointY * segmentY;
  if (along <= 0) {
    return pointX * pointX + pointY * pointY;
  }
  if (along >= lengthSquared) {
    final endX = pointX - segmentX;
    final endY = pointY - segmentY;
    return endX * endX + endY * endY;
  }
  final across = pointX * segmentY - pointY * segmentX;
  return across * across / lengthSquared;
}