distanceFromPointToLine static method
计算点到线段的距离
Implementation
static double distanceFromPointToLine(
Offset point, Offset lineStart, Offset lineEnd) {
final a = point.dx - lineStart.dx;
final b = point.dy - lineStart.dy;
final c = lineEnd.dx - lineStart.dx;
final d = lineEnd.dy - lineStart.dy;
final dot = a * c + b * d;
final lenSq = c * c + d * d;
if (lenSq == 0) return DrawingTool.distanceBetweenPoints(point, lineStart);
final param = dot / lenSq;
Offset projection;
if (param < 0) {
projection = lineStart;
} else if (param > 1) {
projection = lineEnd;
} else {
projection = Offset(lineStart.dx + param * c, lineStart.dy + param * d);
}
return DrawingTool.distanceBetweenPoints(point, projection);
}