我正在尝试构建可视化。这个想法是用圆圈形成一个球体。与此类似:
换句话说,我想在一个球体中包含一定数量的数字,比如说N。所有圆圈应具有相同的半径,最近的圆圈应与其中心具有相同的距离。
我知道如何绘制圆圈,所以真正的问题是找到圆圈的中心。如何在球体上找到所有相邻点将位于彼此相同距离的点,并且该距离等于。
将此任务描述为一个函数,它将具有以下符号
[RadiusOfSphere, NumberOfPoints] -> [CenterOfCircle, MaximumCircleRadius]
答案 0 :(得分:0)
正如问题所述,可能没有可能的解决方案。障碍是不是每个点数N都可以承认你指定的那种包装。
你可以将半径固定为1,然后在所有情况下进行缩放。
要求圆具有相同的半径并且与最近邻居具有相同的距离,这等于说最近的邻居彼此相切。在此假设下,所有最近邻居在连接其中心的线段上具有相同的间隙。将半径扩大这个间隙的一半,现在所有最近的圆都是切线。这些中心不会在这种转变下移动。所以我们可以假设圆是相切的。
Circle packing不是一个微不足道的数学问题,证明极简或不存在往往需要计算机辅助证明。我甚至不知道任意N的存在。可能会有结果,但它没有在简短的搜索中出现。
如果你不需要每一个N,而只需要一系列N,那么你就可以得到足够大的N,每个quasiregular polyhedron和它们的对偶(例如rhombic triacontahedron,这里有人可能所有人都承认圆形填料更好地作为一个30面模具。它们的细分也是如此(通过将边缘分成k个部分引起的图形)。因此,对于给定数量的圆> N,选择上述多面体之一并细分它以使面的数量足够大。