public static bool Contains(Polygon2 <double> outer, Polygon2 <double> inner) { if (outer == null || inner == null) { return(false); } if (outer.HasHoles) { if (RingUtils.Contains(outer.OuterRing, inner.OuterRing)) { for (int i = 0; i < outer.InnerRings.Rings.Length; i++) { if (RingUtils.Contains(outer.InnerRings.Rings[i], inner.OuterRing)) { return(false); //in a hole } } return(true); } else { return(false); } } else { return(RingUtils.Contains(outer.OuterRing, inner.OuterRing)); } }
//point is inside the ring - not on the edge public static bool Contains(Polygon2 <double> ring, Point2 <double> pt) { if (ring == null || pt == null) { return(false); } if (ring.HasHoles) { if (RingUtils.Contains(ring.OuterRing, pt)) { for (int i = 0; i < ring.InnerRings.Rings.Length; i++) { if (RingUtils.Contains(ring.InnerRings.Rings[i], pt)) { return(false); //in a hole } } return(true); } else { return(false); } } else { return(RingUtils.Contains(ring.OuterRing, pt)); } }