public static FsLatLonQuadrilateral ForRunway(FsLatLonPoint ThresholdCentre, double HeadingTrue, double WidthInFeet, double LengthInFeet) { double num = Math.PI * HeadingTrue / 180.0; double decimalDegrees1 = FsLatitudeSpan.FromFeet(Math.Sin(num) * WidthInFeet / 2.0).DecimalDegrees; FsLatitude fsLatitude1 = new FsLatitude(ThresholdCentre.Latitude.DecimalDegrees - decimalDegrees1); double Feet = Math.Cos(num) * WidthInFeet / 2.0; double decimalDegrees2 = FsLongitudeSpan.FromFeet(Feet, fsLatitude1).DecimalDegrees; FsLongitude Longitude1 = new FsLongitude(ThresholdCentre.Longitude.DecimalDegrees + decimalDegrees2); FsLatLonPoint P1 = new FsLatLonPoint(fsLatitude1, Longitude1); fsLatitude1 = new FsLatitude(ThresholdCentre.Latitude.DecimalDegrees + decimalDegrees1); double decimalDegrees3 = FsLongitudeSpan.FromFeet(Feet, fsLatitude1).DecimalDegrees; Longitude1 = new FsLongitude(ThresholdCentre.Longitude.DecimalDegrees - decimalDegrees3); FsLatLonPoint P0 = new FsLatLonPoint(fsLatitude1, Longitude1); double decimalDegrees4 = FsLatitudeSpan.FromFeet(Math.Cos(num) * LengthInFeet).DecimalDegrees; FsLatitude fsLatitude2 = new FsLatitude(ThresholdCentre.Latitude.DecimalDegrees + decimalDegrees4); double decimalDegrees5 = FsLongitudeSpan.FromFeet(Math.Sin(num) * LengthInFeet, fsLatitude2).DecimalDegrees; FsLongitude Longitude2 = new FsLongitude(ThresholdCentre.Longitude.DecimalDegrees + decimalDegrees5); FsLatLonPoint fsLatLonPoint = new FsLatLonPoint(fsLatitude2, Longitude2); fsLatitude1 = new FsLatitude(fsLatLonPoint.Latitude.DecimalDegrees - decimalDegrees1); double decimalDegrees6 = FsLongitudeSpan.FromFeet(Feet, fsLatitude1).DecimalDegrees; Longitude1 = new FsLongitude(fsLatLonPoint.Longitude.DecimalDegrees + decimalDegrees6); FsLatLonPoint P3 = new FsLatLonPoint(fsLatitude1, Longitude1); fsLatitude1 = new FsLatitude(fsLatLonPoint.Latitude.DecimalDegrees + decimalDegrees1); double decimalDegrees7 = FsLongitudeSpan.FromFeet(Feet, fsLatitude1).DecimalDegrees; Longitude1 = new FsLongitude(fsLatLonPoint.Longitude.DecimalDegrees - decimalDegrees7); FsLatLonPoint P2 = new FsLatLonPoint(fsLatitude1, Longitude1); return(new FsLatLonQuadrilateral(P0, P1, P2, P3)); }
public static FsLongitudeSpan BetweenTwoLongitudes(FsLongitude Lon1, FsLongitude Lon2) { if ((Lon2.UDegrees - Lon1.UDegrees) % 360.0 < (Lon1.UDegrees - Lon2.UDegrees) % 360.0) { return(new FsLongitudeSpan((Lon2.UDegrees - Lon1.UDegrees) % 360.0)); } return(new FsLongitudeSpan((Lon1.UDegrees - Lon2.UDegrees) % 360.0)); }
public void AddTCASTarget(int ID, string ATCIdentifier, AITrafficStatus State, FsLatitude Latitude, FsLongitude Longitude, double AltitudeFeet, double HeadingDegreesTrue, short GroundSpeedKnots, short VerticalSpeedFeet, short Com1) { this.aiTCASTargets.Add(new AIPlaneInfo() { id = ID, idATC = ATCIdentifier, lat = (float)Latitude.DecimalDegrees, lon = (float)Longitude.DecimalDegrees, alt = (float)AltitudeFeet, hdg = (ushort)(HeadingDegreesTrue * 360.0), gs = GroundSpeedKnots, vs = VerticalSpeedFeet, com1 = Com1, state = (byte)State }); }
public FsLatLonPoint(FsLatitude Latitude, FsLongitude Longitude) { this.lon = Longitude; this.lat = Latitude; }
public FsLongitude(int Degrees, int Minutes, double DecimalSeconds) { this = new FsLongitude((double)Degrees + (double)Minutes / 60.0 + DecimalSeconds / 3600.0); }
public FsLongitude(int Degrees, double DecimalMinutes) { this = new FsLongitude((double)Degrees + DecimalMinutes / 60.0); }
public FsLongitude(int FSUnits) { this = new FsLongitude((double)FSUnits * 360.0 / 4294967296.0); }
public FsLongitude(long FSUnits) { this = new FsLongitude((double)FSUnits * 360.0 / 1.84467440737096E+19); }