Esempio n. 1
0
        public void BearingTest()
        {
            List <GpsLocation> inputLocations = new List <GpsLocation>()
            {
                new GpsLocation(0.0m, 0.0m),              // Zero GPS coordinates, south of Ghana
                new GpsLocation(40.748456m, 175.985478m), // North Pacific Ocean
                new GpsLocation(89.1m, -115.122701m),     // Close to North Pole
                new GpsLocation(73.507778m, 80.537315m),  // Dikson Island, Russia
            };

            List <double> expectedInitialBearings = new List <double>()
            {
                // Zero GPS to
                4.645278,  // North Pacific Ocean
                359.185,   // Close to North Pole
                16.279722, // Dikson Island

                // North Pacific Ocean to
                1.113611,   // Close to North Pole
                339.201389, // Dikson Island

                // Cose to North Pole to
                345.118889, // Dikson Island
            };


            List <double> expectedFinalBearings = new List <double>()
            {
                // Zero GPS to
                173.863333, // North Pacific Ocean
                244.88,     // Close to North Pole
                80.92,      // Dikson Island

                // North Pacific Ocean to
                69.621111,  // Close to North Pole
                251.368056, // Dikson Island

                // Cose to North Pole to
                180.814167, // Dikson Island
            };


            int index = 0;

            for (int i = 0; i < inputLocations.Count - 1; i++)
            {
                GpsLocation locFrom = inputLocations[i];

                for (int j = i + 1; j < inputLocations.Count; j++)
                {
                    GpsLocation locTo = inputLocations[j];

                    double initialBearing = locFrom.InitialBearingTo(locTo);
                    double finalBearing   = locFrom.FinalBearingTo(locTo);

                    Assert.True(initialBearing.ApproxEqual(expectedInitialBearings[index], 0.0003));
                    Assert.True(finalBearing.ApproxEqual(expectedFinalBearings[index], 0.0003));
                    index++;
                }
            }
        }