distanceToSegmentSquared method
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;
}