半径 R が定義された 1 つの球体と、デカルト座標を含む 3 つの要素の配列から始めるとします。
double vecpos[3];
vecpos[0]= 0.0;
vecpos[1]= 0.0;
vecpos[2]= 0.0;
double radius= 5;
ここで、さらに球体を追加したいと思います。これらの追加の球体は、可能な限り高密度に詰め込む必要があります。
この単一の球から始めて、最も密集した方法でさらに球を追加するアルゴリズムを探しています。もちろん、球体は重ならない場合があります (つまり、固体ビー玉のように動作します)。
これまでの私の試みは、より多くの球体を追加することに集中していました (たとえば、元の球体の左右に、次の位置に:
(10,0,0)
(-10,0,0)
次に、上下に新しいものを追加します(計算された位置:
(5, sqrt(3)/2 * 10, 0)
(-5, sqrt(10)/2 * 10, 0)
(5, sqrt(3)/2 * -10, 0)
(-5, sqrt(3)/2 * -10, 0)
(中心の六角形を作成します)。この時点まで、2 つの球の中心を使用して 3 番目の球を作成する等距離三角形を作成する単純なアルゴリズムを使用して、新しい球を構築し続けることができることを認識しています (これが、4 つの新しい球の位置を計算した方法です)。上の球)。
しかし、3 次元への移行 (つまり、他の球体の上または下に新しい球体を追加すること) で行き詰まってしまいました。
私の問題を解決する提案、または私の解決策よりも簡単な提案は大歓迎です。
ありがとうございました。