isTouches method

bool isTouches(
  1. int dimensionOfGeometryA,
  2. int dimensionOfGeometryB
)

Returns true if this IntersectionMatrix is FT*******, FT*** or F*T**.

@param dimensionOfGeometryA the dimension of the first Geometry @param dimensionOfGeometryB the dimension of the second Geometry @return true if the two Geometry s related by this IntersectionMatrix touch; Returns false if both Geometrys are points.

Implementation

bool isTouches(int dimensionOfGeometryA, int dimensionOfGeometryB) {
  if (dimensionOfGeometryA > dimensionOfGeometryB) {
    //no need to get transpose because pattern matrix is symmetrical
    return isTouches(dimensionOfGeometryB, dimensionOfGeometryA);
  }
  if ((dimensionOfGeometryA == Dimension.A &&
          dimensionOfGeometryB == Dimension.A) ||
      (dimensionOfGeometryA == Dimension.L &&
          dimensionOfGeometryB == Dimension.L) ||
      (dimensionOfGeometryA == Dimension.L &&
          dimensionOfGeometryB == Dimension.A) ||
      (dimensionOfGeometryA == Dimension.P &&
          dimensionOfGeometryB == Dimension.A) ||
      (dimensionOfGeometryA == Dimension.P &&
          dimensionOfGeometryB == Dimension.L)) {
    return matrix[Location.INTERIOR][Location.INTERIOR] == Dimension.FALSE &&
        (isTrue(matrix[Location.INTERIOR][Location.BOUNDARY]) ||
            isTrue(matrix[Location.BOUNDARY][Location.INTERIOR]) ||
            isTrue(matrix[Location.BOUNDARY][Location.BOUNDARY]));
  }
  return false;
}