internal static com.epl.geometry.QuadTreeImpl BuildQuadTree(com.epl.geometry.MultiPointImpl multipointImpl, com.epl.geometry.Envelope2D extentOfInterest) { com.epl.geometry.QuadTreeImpl quad_tree_impl = new com.epl.geometry.QuadTreeImpl(extentOfInterest, 8); com.epl.geometry.Point2D pt = new com.epl.geometry.Point2D(); bool resized_extent = false; com.epl.geometry.Envelope2D boundingbox = new com.epl.geometry.Envelope2D(); for (int i = 0; i < multipointImpl.GetPointCount(); i++) { multipointImpl.GetXY(i, pt); if (!extentOfInterest.Contains(pt)) { continue; } boundingbox.SetCoords(pt); int element_handle = quad_tree_impl.Insert(i, boundingbox); if (element_handle == -1) { if (resized_extent) { throw com.epl.geometry.GeometryException.GeometryInternalError(); } // resize extent resized_extent = true; com.epl.geometry.Envelope2D extent = new com.epl.geometry.Envelope2D(); multipointImpl.CalculateEnvelope2D(extent, false); quad_tree_impl.Reset(extent, 8); i = -1; // resets the for-loop continue; } } return(quad_tree_impl); }