isTouches method
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 Geometry
s 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;
}