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

Алгоритм очень эффективный, особенно для сложных объектов, занимающих мало место в матрице.

p.s. еще неплохим подспорьем может оказаться дробление объекта на составляющие (т.е. представлять объект сразу несколькими объектами, параметры которых вычислять тут же, даже не требуется физически хранить и двигать эти объекты синхронно)
Начните с того, что объекты сталкиваются поверхностями.

Далее — можно проводить дискретизацию формы объекта с уменьшением точности (скажем, контур объекта 1000 точек, построить производные объекты с 100 точками, с 10). Обсчитывать полностью только грубую модель. На выходе вы не будете знать, столкнулимь объекты или нет (на то она и грубая), но сможете примерно прикинуть вероятность (коэффициенты зависят от формы модели) и узлы которые ближе всего друг к другу и потенциально участвуют в столкновении. 

Если вероятность столкновения по грубой модели велика, обсчитать этот участок в более высоком разрешении и т.д.