/// <summary> /// Inserts an object into index. /// </summary> /// <param name="obj">An object to insert</param> public void Insert <T>(T obj) where T : IIndexable { if (!IndexedSpace.ContainsRectangle(obj.BoundingRectangle)) { throw new ArgumentException("Bounding rectangle of the object outside the indexed space. Need to rebuild index.", "obj"); } _root.Insert(obj, 1); }
/// <summary> /// Строит индекс для списка объектов. /// </summary> /// <param name="objects">Перечислитель объектов, для которых требуется построить индекс</param> public void Build <T>(IEnumerable <T> objects) where T : IIndexable { Clear(); List <T> list = new List <T>(); foreach (T obj in objects) { if (IndexedSpace.ContainsRectangle(obj.BoundingRectangle)) { list.Add(obj); } else { throw new ArgumentException("At least one object goes beyond the indexed space", "objects"); } } _root.Build(list); }