distanceSquaredPointToSegment function
Returns squared shortest distance from point to segment a-b.
Implementation
double distanceSquaredPointToSegment(Offset point, Offset a, Offset b) {
final ab = b - a;
final ap = point - a;
final abLen2 = ab.dx * ab.dx + ab.dy * ab.dy;
if (abLen2 <= kEpsilonSquared) {
final delta = point - a;
return delta.dx * delta.dx + delta.dy * delta.dy;
}
var t = (ap.dx * ab.dx + ap.dy * ab.dy) / abLen2;
if (t < 0) t = 0;
if (t > 1) t = 1;
final projection = Offset(a.dx + ab.dx * t, a.dy + ab.dy * t);
final delta = point - projection;
return delta.dx * delta.dx + delta.dy * delta.dy;
}