Homchenkokostya
@Homchenkokostya

Как упаковать шары в форме сферы?

Например мы имеем 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);
      }
    }
  }
}


Визуализация

5c87e1595b648135857622.png
  • Вопрос задан
  • 291 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы