Point.Empty.Equals(Point.Empty) == false // почему?

Используя NetTopologySuite, эти выражения ложны:

Point.Empty.Equals(Point.Empty); // false    
Polygon.Empty.Equals(Polygon.Empty); // false

Отладка показывает, что это поведение реализуется

    // Geometry
    public IntersectionMatrix Relate(IGeometry g)
    {        
        return RelateOp.Relate(this, g); // Point.Empty, Point.Empty
    }

    // IntersectionMatrix
    public bool IsEquals(Dimension dimensionOfGeometryA, Dimension dimensionOfGeometryB)
    {
        if (dimensionOfGeometryA != dimensionOfGeometryB)
            return false;

        return IsTrue(_matrix[(int)Location.Interior, (int)Location.Interior]) &&
               _matrix[(int)Location.Interior, (int)Location.Exterior] == Dimension.False &&
               _matrix[(int)Location.Boundary, (int)Location.Exterior] == Dimension.False &&
               _matrix[(int)Location.Exterior, (int)Location.Interior] == Dimension.False &&
               _matrix[(int)Location.Exterior, (int)Location.Boundary] == Dimension.False;
    }

Интересно, в чем причина этого. Предположительно, такое поведение встречается и в связанных библиотеках (jts, GEOS), и я также предполагаю, что есть основания, известные инсайдерам геоалгебры. Может кто-нибудь объяснить?

0 ответов

Другие вопросы по тегам