perpendicularDistance function
Calculate perpendicular distance from point to line segment.
Implementation
double perpendicularDistance(
MapEntry<DateTime, double> point,
MapEntry<DateTime, double> lineStart,
MapEntry<DateTime, double> lineEnd,
int totalPoints,
) {
// Normalize time to 0-1 range for distance calculation.
final x0 = point.key.millisecondsSinceEpoch.toDouble();
final y0 = point.value;
final x1 = lineStart.key.millisecondsSinceEpoch.toDouble();
final y1 = lineStart.value;
final x2 = lineEnd.key.millisecondsSinceEpoch.toDouble();
final y2 = lineEnd.value;
// Calculate perpendicular distance.
final dx = x2 - x1;
final dy = y2 - y1;
final numerator = ((dy * (x0 - x1)) - (dx * (y0 - y1))).abs();
final denominator = sqrt(dx * dx + dy * dy);
return denominator != 0 ? numerator / denominator : 0;
}