/// <summary> /// /// </summary> /// <param name="geom"></param> /// <returns></returns> public bool Intersects(IGeometry geom) { if (!_rectEnv.Intersects(geom.EnvelopeInternal)) { return(false); } // test envelope relationships EnvelopeIntersectsVisitor visitor = new EnvelopeIntersectsVisitor(_rectEnv); visitor.ApplyTo(geom); if (visitor.Intersects()) { return(true); } // test if any rectangle corner is contained in the target ContainsPointVisitor ecpVisitor = new ContainsPointVisitor(_rectangle); ecpVisitor.ApplyTo(geom); if (ecpVisitor.ContainsPoint()) { return(true); } // test if any lines intersect LineIntersectsVisitor liVisitor = new LineIntersectsVisitor(_rectangle); liVisitor.ApplyTo(geom); if (liVisitor.Intersects()) { return(true); } return(false); }
/// <summary> /// /// </summary> /// <param name="geom"></param> /// <returns></returns> public bool Intersects(IGeometry geom) { if (!_rectEnv.Intersects(geom.EnvelopeInternal)) return false; // test envelope relationships EnvelopeIntersectsVisitor visitor = new EnvelopeIntersectsVisitor(_rectEnv); visitor.ApplyTo(geom); if (visitor.Intersects()) return true; // test if any rectangle corner is contained in the target ContainsPointVisitor ecpVisitor = new ContainsPointVisitor(_rectangle); ecpVisitor.ApplyTo(geom); if (ecpVisitor.ContainsPoint()) return true; // test if any lines intersect LineIntersectsVisitor liVisitor = new LineIntersectsVisitor(_rectangle); liVisitor.ApplyTo(geom); if (liVisitor.Intersects()) return true; return false; }