Beispiel #1
0
        public GeoPoint Midpoint()
        {
            Double bx = Math.Cos(p2.LatitudeRadians) * Math.Cos(GetLongitudeDistance());
            Double by = Math.Cos(p2.LatitudeRadians) * Math.Sin(GetLongitudeDistance());

            Double latitude = Math.Atan2(Math.Sin(p1.LatitudeRadians) + Math.Sin(p2.LatitudeRadians),
                                         Math.Sqrt(Math.Pow(Math.Cos(p1.LatitudeRadians) + bx, 2) + Math.Pow(by, 2)));

            Double longitude = p1.LongitudeRadians + Math.Atan2(by, Math.Cos(p1.LatitudeRadians) + bx);

            longitude = (longitude + 3 * Math.PI) % (2 * Math.PI) - Math.PI;

            return(GeoPoint.Parse(MathUtilities.ToDegrees(latitude), MathUtilities.ToDegrees(longitude), p1.ReferenceEllipsoid));
        }
        public GeoPoint Project()
        {
            Double d  = distance.In(MetricUnit.meters);
            Double dR = d / GeoConstants.EARTH_RADIUS;

            Double latitude = Math.Asin(Math.Sin(from.LatitudeRadians) *
                                        Math.Cos(dR) + Math.Cos(from.LatitudeRadians) *
                                        Math.Sin(dR) * Math.Cos(bearing.Radians()));

            Double longitude = from.LongitudeRadians + Math.Atan2(Math.Sin(bearing.Radians()) *
                                                                  Math.Sin(dR) * Math.Cos(from.LatitudeRadians),
                                                                  Math.Cos(dR) - Math.Sin(from.LatitudeRadians) *
                                                                  Math.Sin(latitude));

            longitude = (longitude + 3 * Math.PI) % (2 * Math.PI) - Math.PI;

            return(GeoPoint.Parse(MathUtilities.ToDegrees(latitude), MathUtilities.ToDegrees(longitude), from.ReferenceEllipsoid));
        }