Example #1
0
        public void testConversion()
        {
            // Test special cases: poles, "date line"
            assertDoubleNear(
                new S2LatLng(S2LatLng.FromDegrees(90.0, 65.0).ToPoint()).Lat.Degrees, 90.0);
            assertEquals(
                new S2LatLng(S2LatLng.FromRadians(-S2.PiOver2, 1).ToPoint()).Lat.Radians, -S2.PiOver2);
            assertDoubleNear(
                Math.Abs(new S2LatLng(S2LatLng.FromDegrees(12.2, 180.0).ToPoint()).Lng.Degrees), 180.0);
            assertEquals(
                Math.Abs(new S2LatLng(S2LatLng.FromRadians(0.1, -S2.Pi).ToPoint()).Lng.Radians),
                S2.Pi);

            // Test a bunch of random points.
            for (var i = 0; i < 100000; ++i)
            {
                var p = randomPoint();
                assertTrue(S2.ApproxEquals(p, new S2LatLng(p).ToPoint()));
            }

            // Test generation from E5
            var test = S2LatLng.FromE5(123456, 98765);

            assertDoubleNear(test.Lat.Degrees, 1.23456);
            assertDoubleNear(test.Lng.Degrees, 0.98765);
        }
Example #2
0
 public void Test_E5()
 {
     for (var i = 0; i < kIters; i++)
     {
         var ll    = S2LatLng.FromPoint(S2Testing.RandomPoint());
         var ll_e5 = S2LatLng.FromE5(ll.Lat().E5(), ll.Lng().E5());
         ExpectMaxDigits(ll_e5, 5);
     }
 }
        public void Test_IntLatLngSnapFunction_SnapPoint()
        {
            for (int iter = 0; iter < 1000; ++iter)
            {
                // Test that IntLatLngSnapFunction does not modify points that were
                // generated using the S2LatLng.From{E5,E6,E7} methods.  This ensures
                // that both functions are using bitwise-compatible conversion methods.
                S2Point  p  = S2Testing.RandomPoint();
                S2LatLng ll = new(p);
                S2Point  p5 = S2LatLng.FromE5(ll.Lat().E5(), ll.Lng().E5()).ToPoint();
                Assert.Equal(p5, new IntLatLngSnapFunction(5).SnapPoint(p5));
                S2Point p6 = S2LatLng.FromE6(ll.Lat().E6(), ll.Lng().E6()).ToPoint();
                Assert.Equal(p6, new IntLatLngSnapFunction(6).SnapPoint(p6));
                S2Point p7 = S2LatLng.FromE7(ll.Lat().E7(), ll.Lng().E7()).ToPoint();
                Assert.Equal(p7, new IntLatLngSnapFunction(7).SnapPoint(p7));

                // Make sure that we're not snapping using some lower exponent.
                S2Point p7not6 = S2LatLng.FromE7(10 * ll.Lat().E6() + 1,
                                                 10 * ll.Lng().E6() + 1).ToPoint();
                Assert.NotEqual(p7not6, new IntLatLngSnapFunction(6).SnapPoint(p7not6));
            }
        }