Есть такая возможность ускорить вычисление

. Рассмотрим функции от

и

:

Тогда легко видеть, что

(следует учесть, что

. Это подсказывает такой путь: затабулировать

,

достаточно
плотно по

, а потом пользоваться указанными соотношениями (интерполируя

и

из близлежащих затабулированных точек). Тогда вычисление

будет требовать не миллиарда операций, а порядка ста тысяч.
Реализовал вашу идею с сетками. Попробую описать в двумерном виде как я выбирал интервалы, благо принцип тот же:

Вокруг обоих тел рисуется по ящику (мин./макс.

), затем ищутся их диагонали. Диагональ первого ящика прибавляется со всех сторон ко второму, а диагональ второго ящика со всех сторон к первому.
И затем уже для этих внешних ящиков табулируются

(вокруг первого расширенного диагоналями второго) и

(вокруг второго расширенного диагоналями первого).
По идее этих границ должно быть более чем достаточно.
Однако теперь единственная проблема это найти

, я не понимаю как это сделать для поворотов.
Допустим второе тело вращается вокруг оси

на 180 градусов, не своей какой-то центральной оси, а обычной, общей, если можно так выразиться. А затем смещается в угол ящика для

.
Возможно ли для этой ситуации найти

для первого тела? Если тупо повернуть на -180 вокруг общей оси

и затем вычесть тот же вектор смещения который прибавялся ко второму телу, в ящик для

я не попадаю. Также попробовал транспонировать матрицу поворота и потом тоже вычесть вектор смещения - снова не попал.
Я предполагаю что это невозможно и вращать надо вокруг собственных осей и тогда все сойдется. Но как их правильно найти?