R-деревья подойдут, да.
деревья квадов также являются хорошей структурой данных для быстрого поиска объектов в области 2D-пространства. Они действительно более унифицированная версия r-деревьев. Используя эти структуры, вы можете быстро сосредоточиться на небольшой области пространства, с очень небольшим количеством тестов, даже с массивными наборами данных.
Здесь есть реализация c # здесь , хотя я на это не смотрел.
Этот тип структуры данных (и ее 3D-версия называется Octrees ) часто используется в играх для управления большими наборами данных объектов, которые должны знать, находятся ли они рядом с какими-либо другими объектами для тестирования на столкновение и все другие забавные причины.
Вы сможете найти множество статей и примеров подобных структур данных на сайтах игровой индустрии, таких как gamasutra и opengl.org