2015-11-21 58 views
0

我正在尝试构建可视化。这个想法是用圆圈形成一个球体。与此相似:矢量从单点出去的坐标

Ball made of circles

换句话说,我想包一定数目,可以说N,圈中的球体。所有圈子应该有相同的半径,最近的圈子应该有相同的距离。

我知道如何绘制一个圆,所以真正的问题是找到圆的中心。如何找到所有相邻点位于相同距离的球体上的点,这个距离等于多少。

描述此任务的功能,将有以下符号

[RadiusOfSphere, NumberOfPoints] -> [CenterOfCircle, MaximumCircleRadius] 
+0

请参阅http://stackoverflow.com/a/25082674/2521214 – Spektre

回答

0

由于问题表述,有可能是没有可能的解决方案。障碍在于,并非每个点数N都可能允许您指定种类的包装。

您可以将半径固定为1,然后在此处缩放。

要求圆圈具有相同的半径并且与最近的邻居具有相同的距离等于说最近的邻居是彼此相切的。在这个假设下,所有最近的邻居在连接其中心的线段上都有相同的差距。将半径扩大一半,现在所有最接近的圆都相切。这个转变中心不会动。所以我们可以假设这些圆是相切的。

Circle packing不是一个微不足道的数学问题,证明极小或不存在往往需要计算机辅助证明。我甚至不知道任意N的存在。这里可能有一个结果,但它并没有在一个简短的搜索中出现。

如果你不需要每一个N,但只是一系列的N,那么你可以获得足够大的N,每个quasiregular polyhedron及其双重对象(例如rhombic triacontahedron,这里的人可能更好地认为是30面死)都承认圈包装。因此,他们的细分(由边缘分裂成k块引起的数字)。因此,对于给定数量的圆> N,选择上面的多面体之一并细分它,以使面的数量足够大。