Судя по акценту на любые конфигурации объектов вам нужна корректная обработка даже таких случаев, когда по координатно объекты проходят друг сквозь друга, но из-за особенностей их конфигурационных матриц они не сталкиваются.
Универсальное решение — только хранение дополнительных матриц кешей, уменьшенного масштаба объектов. Количество и конфигурация кешей зависит от сложности этих матриц. На один объект может быть несколько матриц, последовательного уменьшения масштаба (например с коэффициентом 4 — 128x128 -> 32x32 -> 8x8 -> 2x2), тогда при обнаружени столкновения прямоугольных областей объектов последовательно проверяются пересечения точек сначала на матрицах конфигураций объектов с низким разрешением, при обнаружении пересечения повторяется проверка для соответствующих точек уже из матрицы с более высоким разрешением.
Алгоритм очень эффективный, особенно для сложных объектов, занимающих мало место в матрице.
p.s. еще неплохим подспорьем может оказаться дробление объекта на составляющие (т.е. представлять объект сразу несколькими объектами, параметры которых вычислять тут же, даже не требуется физически хранить и двигать эти объекты синхронно)