Exemple #1
0
        public float Distance(IMBP point1, IMBP point2)
        {
            if (point1.Coordinates.Length != 2 && point2.Coordinates.Length != 2)
                throw new Exception("The points are not in geo space");

            var currentRPointStart = point1.Coordinates;
            var currentRPointEnd = point2.Coordinates;

            var longitudeStart = currentRPointStart[1] * Math.PI / 180;
            var latitudueStart = currentRPointStart[0] * Math.PI / 180;
            var longitudeEnd = currentRPointEnd[1] * Math.PI / 180;
            var latitudeEnd = currentRPointEnd[0] * Math.PI / 180;

            var cl1 = Math.Cos(latitudueStart);
            var cl2 = Math.Cos(latitudeEnd);
            var sl1 = Math.Sin(latitudueStart);
            var sl2 = Math.Sin(latitudeEnd);
            var delta = longitudeEnd - longitudeStart;
            var cdelta = Math.Cos(delta);
            var sdelta = Math.Sin(delta);

            var y = Math.Sqrt(Math.Pow(cl2 * sdelta, 2) + Math.Pow(cl1 * sl2 - sl1 * cl2 * cdelta, 2));
            var x = sl1 * sl2 + cl1 * cl2 * cdelta;
            var angelDifference = Math.Atan2(y, x);

            float currentDistance = (float)angelDifference * RadiusOfEarth;

            return currentDistance;
        }
Exemple #2
0
        public float Distance(IMBP point1, IMBP point2)
        {
            if (point1.Coordinates.Length != 2 && point2.Coordinates.Length != 2)
            {
                throw new Exception("The points are not in geo space");
            }

            var currentRPointStart = point1.Coordinates;
            var currentRPointEnd   = point2.Coordinates;


            var longitudeStart = currentRPointStart[1] * Math.PI / 180;
            var latitudueStart = currentRPointStart[0] * Math.PI / 180;
            var longitudeEnd   = currentRPointEnd[1] * Math.PI / 180;
            var latitudeEnd    = currentRPointEnd[0] * Math.PI / 180;

            var cl1    = Math.Cos(latitudueStart);
            var cl2    = Math.Cos(latitudeEnd);
            var sl1    = Math.Sin(latitudueStart);
            var sl2    = Math.Sin(latitudeEnd);
            var delta  = longitudeEnd - longitudeStart;
            var cdelta = Math.Cos(delta);
            var sdelta = Math.Sin(delta);


            var y = Math.Sqrt(Math.Pow(cl2 * sdelta, 2) + Math.Pow(cl1 * sl2 - sl1 * cl2 * cdelta, 2));
            var x = sl1 * sl2 + cl1 * cl2 * cdelta;
            var angelDifference = Math.Atan2(y, x);

            float currentDistance = (float)angelDifference * RadiusOfEarth;


            return(currentDistance);
        }
Exemple #3
0
        public void DistanceUnitTest()
        {
            Assert.Inconclusive("TODO");

            IMetric target   = CreateIMetric(); // TODO: Initialize to an appropriate value
            IMBP    myPoint1 = null;            // TODO: Initialize to an appropriate value
            IMBP    myPoint2 = null;            // TODO: Initialize to an appropriate value
            float   expected = 0F;              // TODO: Initialize to an appropriate value
            float   actual;

            actual = target.Distance(myPoint1, myPoint2);
            Assert.AreEqual(expected, actual);
        }
Exemple #4
0
        public float Distance(IMBP point1, IMBP point2)
        {
            float currentDistance = 0.0f;

            if (point1.Coordinates.Length != point2.Coordinates.Length && point1.Coordinates.Length != 0)
                throw new Exception("The points are in different space or space not exist ");

            var currentRPointStart = point1.Coordinates;
            var currentRPointEnd = point2.Coordinates;

            for (int i = 0; i < point1.Coordinates.Length; i++)
            {
                currentDistance += (currentRPointStart[i] - currentRPointEnd[i]) *
                       (currentRPointStart[i] - currentRPointEnd[i]);
            }

            currentDistance = (float)Math.Sqrt(currentDistance);

            return currentDistance;
        }
Exemple #5
0
        public float Distance(IMBP point1, IMBP point2)
        {
            float currentDistance = 0.0f;

            if (point1.Coordinates.Length != point2.Coordinates.Length && point1.Coordinates.Length != 0)
            {
                throw new Exception("The points are in different space or space not exist ");
            }

            var currentRPointStart = point1.Coordinates;
            var currentRPointEnd   = point2.Coordinates;

            for (int i = 0; i < point1.Coordinates.Length; i++)
            {
                currentDistance += (currentRPointStart[i] - currentRPointEnd[i]) *
                                   (currentRPointStart[i] - currentRPointEnd[i]);
            }


            currentDistance = (float)Math.Sqrt(currentDistance);

            return(currentDistance);
        }