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 double DistanceFromInFeet(FsLatLonPoint Point) { FsLongitudeSpan fsLongitudeSpan = FsLongitudeSpan.BetweenTwoLongitudes(Point.Longitude, this.lon); double num = (fsLongitudeSpan.ToFeet(this.lat) + fsLongitudeSpan.ToFeet(Point.lat)) / 2.0; double feet = new FsLatitudeSpan(Point.Latitude.DecimalDegrees - this.lat.DecimalDegrees).ToFeet(); return(Math.Sqrt(num * num + feet * feet)); }
public FsLatLonPoint OffsetByNauticalMiles(double Bearing, double Distance) { double NauticalMiles1 = Math.Sin(Math.PI * Bearing / 180.0) * Distance; double NauticalMiles2 = Math.Cos(Math.PI * Bearing / 180.0) * Distance; FsLatLonPoint fsLatLonPoint = new FsLatLonPoint(); fsLatLonPoint.lat = this.lat.Add(FsLatitudeSpan.FromNauticalMiles(NauticalMiles2)); fsLatLonPoint.lon = this.lon.Add(FsLongitudeSpan.FromNauticalMiles(NauticalMiles1, fsLatLonPoint.lat)); return(fsLatLonPoint); }
public FsLatLonPoint OffsetByFeet(double Bearing, double Distance) { double Feet1 = Math.Sin(Math.PI * Bearing / 180.0) * Distance; double Feet2 = Math.Cos(Math.PI * Bearing / 180.0) * Distance; FsLatLonPoint fsLatLonPoint = new FsLatLonPoint(); fsLatLonPoint.lat = this.lat.Add(FsLatitudeSpan.FromFeet(Feet2)); fsLatLonPoint.lon = this.lon.Add(FsLongitudeSpan.FromFeet(Feet1, fsLatLonPoint.lat)); return(fsLatLonPoint); }
public static FsLongitudeSpan FromMetres(double Metres, FsLatitude AtLatitude) { return(FsLongitudeSpan.FromFeet(Metres * 3.2808, AtLatitude)); }
public static FsLongitudeSpan FromNauticalMiles(double NauticalMiles, FsLatitude AtLatitude) { return(FsLongitudeSpan.FromFeet(NauticalMiles * 6076.1155, AtLatitude)); }
public FsLongitudeSpan(int Degrees, int Minutes, double DecimalSeconds) { this = new FsLongitudeSpan((double)Degrees + (double)Minutes / 60.0 + DecimalSeconds / 3600.0); }
public FsLongitudeSpan(int Degrees, double DecimalMinutes) { this = new FsLongitudeSpan((double)Degrees + DecimalMinutes / 60.0); }
public FsLongitude Subtract(FsLongitudeSpan Distance) { return(new FsLongitude(this.pos - Distance.DecimalDegrees)); }
public FsLongitude Add(FsLongitudeSpan Distance) { return(new FsLongitude(this.pos + Distance.DecimalDegrees)); }