Сроки Эксперимент
Вы не указали свои временные ограничения, поэтому я провел небольшой эксперимент с хорошим пакетом интеграции.
Без оптимизации каждый интеграл в сферических координатах можно оценить в 0,005 с на стандартном ноутбуке, если плотности кубов являются прямыми функциями.
Так же, как ссылка, это программа в Mathematica:
Clear@f;
(* Define a cuboid as density function *)
iP = IntegerPart;
f[{x_, y_, z_}, {lx_, ly_, lz_}] := iP[x - lx] + iP[y - ly] + iP[z - lz] /;
lx <= x <= lx + 3 && ly <= y <= ly + 3 && lz <= z <= lz + 3;
f[{x_, y_, z_}, {lx_, ly_, lz_}] := Break[] /; True;
Timing[Table[s = RandomReal[{0, 3}, 3]; (*sphere center random*)
sphereRadius = Min[Union[s, 3 - s]]; (*max radius inside cuboid *)
NIntegrate[(f[{x, y, z} - s, -s] /. (*integrate in spherical coords *)
{x -> r Cos@th Sin@phi,
y -> r Sin@th Sin@phi,
z -> r Cos@phi}) r^2 Sin@phi,
{r, 0, sphereRadius}, {th, 0, 2 Pi}, {phi, 0, Pi}],
{10000}]][[1]]
Результат равен 52 с за 10 ^ 4 итерации.
Так что, возможно, вам не нужно много оптимизировать ...