정팔면체 위에 일정한 간격을 갖도록 구체를 배열하고싶습니다

모서리 길이76.8 nm인 정팔면체 위에

지름 11.2 nm의 구를 1.6 nm 간격을 갖도록 규칙적으로 배열하고싶은데요

구의 좌표를 계산해서 정팔면체의 한 면에 대해서는 배열을 할수 있었지만

나머지 면에 대해서도 마찬가지로 배열하고 싶습니다.

가능한 방법이 있을까요?

원하는 것과 같이 octahedron 표면에 triangular 격자 주기를 갖는 구형체를 배열하고자할 때 최종적으로 구해야 하는 것은 각 구의 중심에 해당하는 좌표들입니다. 이를 구하는 효과적인 방법은 위의 그림처럼 octahedron 을 배치하지 말고, 최대한 symmetry 를 활용할 수 있도록 배치를 하고 시작하는 것이 좋을 것 같습니다. 즉, 다음과 같은 수식에 의해 모서리가 \(a\) 인 octahedron 의 surface 가 정의되도록 해놓고 해보시기 바랍니다.
\[|x|+|y|+|z| = \frac{a}{\sqrt 2}\]
이와 같이 하면, \(x\geq0\) , \(y\geq0\) , \(z\geq0\) 의 한 면에서만 구들의 중심좌표를 구하고 나머지는 \(xy, yz, zx\) 면에 대한 대칭성을 이용하여 구하면 될 것입니다.
첫번째 면에서의 구의 중심점을 구하려면 다음과 같은 과정을 밟으면 됩니다.

  1. \(x\geq0\) , \(y\geq0\) , \(z\geq0\) 에 해당하는 첫번째 면과 \(x\), \(y\), \(z\) 면의 교점을 구합니다.
  2. 세 꼭지점의 좌표를 구한 것으로부터, 원하는 간격을 가진 삼각형 격자를 구성을 할 수 있고, 각 격자점도 구할 수가 있습니다. 이 격자점들이 곧 원과 octahedro면과의 접점이 됩니다.
  3. 위 면에 수직한 방향의 vector 를 구합니다. 그리고, 이 방향으로 길이가 구의 반경에 해당하도록 vector 의 크기를 잡아줍니다.
  4. ‘2’ 에서 구한 모든 격자점의 좌표를 ‘3’ 에서 구한 vector 값만큼 이동시켜주면 그것이 첫번째 면에 접한 구들의 중심점이 됩니다.
  5. ‘4’ 에서 구한 좌표값을 \(xy, yz, zx\) 면에 대칭이동을 시켜주면 나머지 7 면에서의 구의 좌표를 구할 수 있습니다.