// This method verifies a.GetDistance(b), where b is a S2LatLng, by comparing // its result against a.GetDistance(c), c being the point rectangle created // from b. private static void VerifyGetRectPointDistance(S2LatLngRect a, S2LatLng p) { S1Angle distance1 = BruteForceRectPointDistance(a, p.Normalized()); S1Angle distance2 = a.GetDistance(p.Normalized()); Assert2.Near(Math.Abs(distance1.Radians - distance2.Radians), 0, 1e-10); }
public void Test_S2LatLng_TestBasic() { S2LatLng ll_rad = S2LatLng.FromRadians(S2.M_PI_4, S2.M_PI_2); Assert.Equal(S2.M_PI_4, ll_rad.LatRadians); Assert.Equal(S2.M_PI_2, ll_rad.LngRadians); Assert.True(ll_rad.IsValid()); S2LatLng ll_deg = S2LatLng.FromDegrees(45, 90); Assert.Equal(ll_rad, ll_deg); Assert.True(ll_deg.IsValid()); Assert.False(S2LatLng.FromDegrees(-91, 0).IsValid()); Assert.False(S2LatLng.FromDegrees(0, 181).IsValid()); S2LatLng bad = S2LatLng.FromDegrees(120, 200); Assert.False(bad.IsValid()); S2LatLng better = bad.Normalized(); Assert.True(better.IsValid()); Assert.Equal(S1Angle.FromDegrees(90), better.Lat()); Assert2.DoubleEqual(S1Angle.FromDegrees(-160).Radians, better.LngRadians); bad = S2LatLng.FromDegrees(-100, -360); Assert.False(bad.IsValid()); better = bad.Normalized(); Assert.True(better.IsValid()); Assert.Equal(S1Angle.FromDegrees(-90), better.Lat()); Assert2.DoubleEqual(0.0, better.LngRadians); Assert.True((S2LatLng.FromDegrees(10, 20) + S2LatLng.FromDegrees(20, 30)). ApproxEquals(S2LatLng.FromDegrees(30, 50))); Assert.True((S2LatLng.FromDegrees(10, 20) - S2LatLng.FromDegrees(20, 30)). ApproxEquals(S2LatLng.FromDegrees(-10, -10))); Assert.True((0.5 * S2LatLng.FromDegrees(10, 20)). ApproxEquals(S2LatLng.FromDegrees(5, 10))); // Check that Invalid() returns an invalid point. S2LatLng invalid = S2LatLng.Invalid; Assert.False(invalid.IsValid()); // Check that the default constructor sets latitude and longitude to 0. S2LatLng default_ll = S2LatLng.Center; Assert.True(default_ll.IsValid()); Assert.Equal(0, default_ll.LatRadians); Assert.Equal(0, default_ll.LngRadians); }
private static string AppendVertex(S2LatLng ll) { var norm = ll.Normalized(); return($"{norm.LatDegrees():g15}:{norm.LngDegrees():g15}"); }