我想知道以下问题是否有公式,或至少有一定范围。考虑一个半径为R的(三维)球体。我可以在不使小球体重叠的情况下放在大球体的表面上的最大半径为r的相等球体的最大数量是多少?安排不必是定期的。也就是说,要求是:1.小球体的中心都在距大球体中心的R + r处; 2.小球体的中心至少相距2r。 我已经在Google上搜索了很多,并遇到了许多有关接吻数(这是一个更受限制的问题)和球形代码的论文,但是如果我正确理解,则后者并不是我考虑的问题,因为最小距离是最大化而不是最小化。
答案 0 :(得分:1)
这比编程更具数学意义(因此我投票赞成Close)...除非您希望将此作为装箱的约束...
无论如何都将其作为注释而不是答案来处理(但作为注释,这将不可读)
如果只想近似边界而不是确切数字,则可以将大球体表面除以较小球体/圆形覆盖率的平均密度...
因此:所有小球体中心都放置在球体r+R
的表面上。表面是:
S = 4*PI*(r+R)^2
现在,如果我们将较小的球体(r
)紧紧地放在平面上,它将看起来像这样:
现在将gaps
(绿色)区域与square-disc
(红色)区域进行比较时:
间隙仅由等边三角形和60度饼形区域形成:
pie: PI*r^2/6
triangle: sqrt(3/4)*r^2/2
triangular gap: tri - 3*(pie-tri)
4*tri - 3*pie
4*sqrt(3/4)*r^2/2 - 3*PI*r^2/6
2*sqrt(3/4)*r^2 - PI*r^2/2
sqrt(3)*r^2 - PI*r^2/2
r^2*(sqrt(3) - PI/2)
所以现在只需将放置区域的球体(r+R
)除以覆盖区域即可。
侧面2*r
的每个等边三角形将覆盖一个单一圆盘间隙的圆盘(3/6
)的r
,因此:
n = S(sphere(R+r)) / 2*S(triangle(2*r)
n = 4*PI*(r+R)^2 / ( 2*sqrt(3/4)*(2*r)^2/2 )
n = PI*(r+R)^2 / sqrt(3/4)*r^2
n = ~ floor (3.6275987*(1+(R/r))^2)
请注意它的确切数字,因为我简化了问题很多(假设球体表面而不是由较小球体的中心创建的多边形),但应非常接近真实边界,并且更精确如果r<<R
...
btw这里可能与您感兴趣的QA相关:
顺便说一句。您可以从另一端对此进行攻击(使用Sphere三角测量链接)。
球体上的最佳堆积是使中心位于等边三角形上。因此,如果从ICOSAHEDRON开始并对其进行细分,则将获得顶点数...大球体上的小球体,然后根据结果计算r
和R
。然后递归细分,直到R/r
与您想要的R'/r'
匹配
因此,每次迭代R/r
都将更接近您的R'/r'
,并且一旦比率超过(它将远离它),您就会停下来并让想要的n
(最接近结果的顶点数)...