Например мы имеем 10 шаров. Каким алгоритмом можно делать упаковку шаров в форме сферы ?
Есть некоторые статьи, но там описывается как заполнить сферу шарами, мне же надо не заполнить, а расставить шары в форме сферы.
https://ru.wikipedia.org/wiki/Плотная_упаковка_рав...
https://en.wikipedia.org/wiki/Sphere_packing_in_a_...
Если следовать алгоритму из первой статьи, то получается вот такая конструкция. Тут создается куб из шаров, и берутся только подходящие шары, в итоге мы получаем сферу, но количество шаров исходит из радиуса сферы (var count) а задача состоит в том, что уже имеется какое то кол-во количество шаров, и их надо разложить в форме сферы.
var count = 10;
for (int k = -count; k < count; k++)
{
for (int i = -count; i < count; i++)
{
for (int j = -count; j < count; j++)
{
var x = 2 * i + (j + k) % 2;
var y = Mathf.Sqrt(3) * (j + 1 / 3 * (k % 2));
var z = Mathf.Sqrt(8 / 3) * k;
if (x * x + y * y + z * z <= count * count)
{
// vector = Vector3(x, y, z);
}
}
}
}
Визуализация