public VectorPoint(GpsPoint point) { var el = point.Elevation + RadiusEarth; var latR = Radians(90 - point.Latitude); var lonR = Radians(point.Longitude); X = el * Math.Cos(lonR) * Math.Sin(latR); Y = el * Math.Sin(lonR) * Math.Sin(latR); Z = el * Math.Cos(latR); }
private GpsPoint GetPointFromXml(XElement xel) { var ret = new GpsPoint() { Elevation = 0.0d, Latitude = 0.0d, Longitude = 0.0d, Time = DateTime.Now }; var lat = xel.Attributes().FirstOrDefault(xatt => String.Equals(xatt.Name.LocalName, "lat", StringComparison.InvariantCultureIgnoreCase)); if (lat != null) { ret.Latitude = double.Parse(lat.Value); } var lon = xel.Attributes().FirstOrDefault(xatt => String.Equals(xatt.Name.LocalName, "lon", StringComparison.InvariantCultureIgnoreCase)); if (lon != null) { ret.Longitude = double.Parse(lon.Value); } var ele = xel.Elements().FirstOrDefault(xele => String.Equals(xele.Name.LocalName, "ele", StringComparison.InvariantCultureIgnoreCase)); if (ele != null) { ret.Elevation = double.Parse(ele.Value); } var time = xel.Elements().FirstOrDefault(xtime => String.Equals(xtime.Name.LocalName, "time", StringComparison.InvariantCultureIgnoreCase)); if (time != null) { ret.Time = DateTime.Parse(time.Value); } return(ret); }
private double DistanceBetween(GpsPoint first, GpsPoint second) { return((new VectorPoint(first)).DistanceFrom(new VectorPoint(second))); }