import 'package:latlong2/latlong.dart'; import '../waypoint/flat_waypoint_list.dart'; const _distance = Distance(roundResult: false); /// Gesamtdistanz/-dauer einer Mission (HTML-Demonstrator: computeStats()). class MissionStats { const MissionStats({required this.distanceM, required this.durationSec}); final double distanceM; final double durationSec; } /// Geteilt zwischen Plan- und Fly-Modus sowie der Warnungsberechnung (Doku /// 3.9/3.10), die dieselben Werte fuer Zeit-/Reichweiten-Warnungen braucht. MissionStats computeMissionStats(List waypoints) { var totalDist = 0.0; var totalDur = 0.0; for (var i = 0; i < waypoints.length - 1; i++) { final a = LatLng(waypoints[i].lat, waypoints[i].lon); final b = LatLng(waypoints[i + 1].lat, waypoints[i + 1].lon); final d = _distance(a, b); totalDist += d; totalDur += d / waypoints[i + 1].speedMs; } return MissionStats(distanceM: totalDist, durationSec: totalDur); }