Esempio n. 1
0
    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));
    }
Esempio n. 2
0
    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")));
    }
Esempio n. 3
0
    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")));
    }
Esempio n. 4
0
    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")));
    }