private void AircraftCoordinateChange(AircraftPosition aircraft) { for (int i = 0; i < _aerodromePoints?.Length; i++) { if (_aerodromePoints[i] == null) { continue; } var abp = _aerodromePoints[i].NavigationPoint; var abpR = _aerodromePoints[i].AerodromeInfo.Runway; var acG = aircraft.GeoCoordinate; abp.Measure.Distance = _measureHelper.GetDistanceInKmLatLon(abp.GeoCoordinate.Latitude, abp.GeoCoordinate.Longitude, acG.Latitude, acG.Longitude); abp.Measure.Psi = _measureHelper.GetDegreesAzimuthLatLon(abp.GeoCoordinate.Latitude, abp.GeoCoordinate.Longitude, acG.Latitude, acG.Longitude); _coordinateHelper.LocalCordToXZ(abp.GeoCoordinate.Latitude, abp.GeoCoordinate.Longitude, abpR.Threshold.Latitude, abpR.Threshold.Longitude, out var x, out var z); _aerodromePoints[i].AerodromeInfo.Runway.Threshold.X = x - acG.X; _aerodromePoints[i].AerodromeInfo.Runway.Threshold.Z = z - acG.Z; _coordinateHelper.LocalCordToXZ(abp.GeoCoordinate.Latitude, abp.GeoCoordinate.Longitude, abpR.GlideSlope.Latitude, abpR.GlideSlope.Longitude, out x, out z); _aerodromePoints[i].AerodromeInfo.Runway.GlideSlope.X = x - acG.X; _aerodromePoints[i].AerodromeInfo.Runway.GlideSlope.Z = z - acG.Z; _coordinateHelper.LocalCordToXZ(abp.GeoCoordinate.Latitude, abp.GeoCoordinate.Longitude, abpR.Localizer.Latitude, abpR.Localizer.Longitude, out x, out z); _aerodromePoints[i].AerodromeInfo.Runway.Localizer.X = x - acG.X; _aerodromePoints[i].AerodromeInfo.Runway.Localizer.Z = z - acG.Z; _coordinateHelper.LocalCordToXZ(abp.GeoCoordinate.Latitude, abp.GeoCoordinate.Longitude, abpR.LocatorMiddle.Latitude, abpR.LocatorMiddle.Longitude, out x, out z); _aerodromePoints[i].AerodromeInfo.Runway.LocatorMiddle.X = x - acG.X; _aerodromePoints[i].AerodromeInfo.Runway.LocatorMiddle.Z = z - acG.Z; _coordinateHelper.LocalCordToXZ(abp.GeoCoordinate.Latitude, abp.GeoCoordinate.Longitude, abpR.LocatorOuter.Latitude, abpR.LocatorOuter.Longitude, out x, out z); _aerodromePoints[i].AerodromeInfo.Runway.LocatorOuter.X = x - acG.X; _aerodromePoints[i].AerodromeInfo.Runway.LocatorOuter.Z = z - acG.Z; } }
private void Calc() { for (int i = 0; i < _aerodromes.Length; i++) { if (_aerodromes[i] == null) { continue; } _aerodromes[i].NavigationPoint.Measure.Distance = _measureHelper.GetDistanceInMLatLon(_aerodromes[i].NavigationPoint.GeoCoordinate.Latitude, _aerodromes[i].NavigationPoint.GeoCoordinate.Longitude, _aircraft.GeoCoordinate.Latitude, _aircraft.GeoCoordinate.Longitude); _aerodromes[i].NavigationPoint.Measure.Psi = _measureHelper.GetDegreesAzimuthLatLon(_aerodromes[i].NavigationPoint.GeoCoordinate.Latitude, _aerodromes[i].NavigationPoint.GeoCoordinate.Longitude, _aircraft.GeoCoordinate.Latitude, _aircraft.GeoCoordinate.Longitude); } }
private void AircraftCoordinateChange(AircraftPosition aircraft) { for (int i = 0; i < _ppmPoints?.Length; i++) { if (_ppmPoints[i] == null) { continue; } var ppmM = _ppmPoints[i].NavigationPoint; var ppmG = _ppmPoints[i].NavigationPoint; var acG = aircraft.GeoCoordinate; var abpG = _aerodromePoint.NavigationPoint; ppmM.Measure.Distance = _measureHelper.GetDistanceInKmLatLon(acG.Latitude, acG.Longitude, ppmG.GeoCoordinate.Latitude, ppmG.GeoCoordinate.Longitude); ppmM.Measure.Psi = _measureHelper.GetDegreesAzimuthLatLon(acG.Latitude, acG.Longitude, ppmG.GeoCoordinate.Latitude, ppmG.GeoCoordinate.Longitude); _coordinateHelper.LocalCordToXZ(abpG.GeoCoordinate.Latitude, abpG.GeoCoordinate.Longitude, ppmG.GeoCoordinate.Latitude, ppmG.GeoCoordinate.Longitude, out var x, out var z); ppmG.GeoCoordinate.X = x - acG.X; ppmG.GeoCoordinate.Z = z - acG.Z; ppmM.Measure.Distance = Math.Sqrt(Math.Pow(ppmG.GeoCoordinate.X, 2) + Math.Pow(ppmG.GeoCoordinate.Z, 2)) / 1000; var time = (ppmM.Measure.Distance * 1000) / aircraft.V; if (double.IsInfinity(time)) { ppmM.Measure.RemainingTime = 0; } else { ppmM.Measure.RemainingTime = time; } if (2000 > Math.Sqrt(ppmG.GeoCoordinate.X * ppmG.GeoCoordinate.X + ppmG.GeoCoordinate.Z * ppmG.GeoCoordinate.Z)) { if (ppmG.Executable == 1) { EventsHelper.OnChangeNpDEvent(new ChangeNp() { Action = 1, TypeOfNp = 2, IdNp = i + 2 }); } } if (i == 0) { DebugParameters.XPPM = ppmG.GeoCoordinate.X; DebugParameters.ZPPM = ppmG.GeoCoordinate.Z; } } }