public void Test_BoundaryIntersects_FullRectangle() { S2LatLngRect rect = S2LatLngRect.Full; S2Point lo = rect.Lo().ToPoint(); var hi = rect.Hi().ToPoint(); Assert.False(rect.BoundaryIntersects(lo, lo)); Assert.False(rect.BoundaryIntersects(lo, hi)); }
public void Test_BoundaryIntersects_SouthHemisphere() { // This rectangle only has only one non-degenerate side. S2LatLngRect rect = RectFromDegrees(-90, -180, 0, 180); Assert.False(rect.BoundaryIntersects( MakePointOrDie("-90:-180"), MakePointOrDie("-60:-180"))); Assert.False(rect.BoundaryIntersects( MakePointOrDie("-60:-170"), MakePointOrDie("-60:170"))); Assert.True(rect.BoundaryIntersects( MakePointOrDie("-10:-180"), MakePointOrDie("10:-180"))); }
public void Test_BoundaryIntersects_RectCrossingAntiMeridian() { S2LatLngRect rect = RectFromDegrees(20, 170, 40, -170); Assert.True(rect.Contains(MakePointOrDie("30:180"))); // Check that crossings of all four sides are detected. Assert.True(rect.BoundaryIntersects( MakePointOrDie("25:160"), MakePointOrDie("25:180"))); Assert.True(rect.BoundaryIntersects( MakePointOrDie("25:-160"), MakePointOrDie("25:-180"))); Assert.True(rect.BoundaryIntersects( MakePointOrDie("15:175"), MakePointOrDie("30:175"))); Assert.True(rect.BoundaryIntersects( MakePointOrDie("45:175"), MakePointOrDie("30:175"))); // Check that the edges on the opposite side of the sphere but at the same // latitude do not intersect the rectangle boundary. Assert.False(rect.BoundaryIntersects( MakePointOrDie("25:-20"), MakePointOrDie("25:0"))); Assert.False(rect.BoundaryIntersects( MakePointOrDie("25:20"), MakePointOrDie("25:0"))); Assert.False(rect.BoundaryIntersects( MakePointOrDie("15:-5"), MakePointOrDie("30:-5"))); Assert.False(rect.BoundaryIntersects( MakePointOrDie("45:-5"), MakePointOrDie("30:-5"))); }
public void Test_BoundaryIntersects_SphericalLune() { // This rectangle only has two non-degenerate sides. S2LatLngRect rect = RectFromDegrees(-90, 100, 90, 120); Assert.False(rect.BoundaryIntersects( MakePointOrDie("60:60"), MakePointOrDie("90:60"))); Assert.False(rect.BoundaryIntersects( MakePointOrDie("-60:110"), MakePointOrDie("60:110"))); Assert.True(rect.BoundaryIntersects( MakePointOrDie("-60:95"), MakePointOrDie("60:110"))); Assert.True(rect.BoundaryIntersects( MakePointOrDie("60:115"), MakePointOrDie("80:125"))); }