Читай про R-деревья.
Спасибо, прочитал.
На сколько я понял.
Для построения индекса-иерархии нужно пройти по базе примитивов и построить "ДЕРЕВО"
"ВЕТКА ДЕРЕВА" - это прямоугольный контейнер в котором находятся другие прямоугольные контейнеры.
"КОНТЕЙНЕР" - это ограничивающий прямоугольник примитива.
Пока не могу понять с чего начать.
Вот первое что приходит в голову:
1) Пройтись по базе примитивов и получить набор прямоугольников и найти самый большой (или несколько больших).
2) Дальше скорее нужно выбрать те прямоугольники, которые пересекаются с этим большим (или большими).
3) На этом этапе дерево будет иметь уже два уровня
4) Далее все тоже и в п. 1) 3) только для каждой "ВЕТКИ"