Algorithm n个圆盘/圆交点的质心

Algorithm n个圆盘/圆交点的质心,algorithm,geometry,Algorithm,Geometry,假设n个磁盘/圆共享一个公共区域,这意味着每两个磁盘/圆彼此相交,我们知道它们的坐标(x1,y1,r1),(x2,y2,r2),…,(xn,yn,rn)在这里,席、义、Rn分别代表X轴坐标、Y轴坐标和第i盘/圆的半径,你能提供一种计算这些圆盘/圆圈相交的质心坐标的方法吗?!< < /P> < P>让我们假设所有的圆重叠,这样就可以在其中一个点上跟踪任意点的路径。圆到任何其他圆中的任意点,同时只遍历由圆包含的点。并且,为了一般性,这些圆可能具有不同的半径 根据,您可以将此形状分解为单独的几何区域。

假设n个磁盘/圆共享一个公共区域,这意味着每两个磁盘/圆彼此相交,我们知道它们的坐标(x1,y1,r1),(x2,y2,r2),…,(xn,yn,rn)在这里,席、义、Rn分别代表X轴坐标、Y轴坐标和第i盘/圆的半径,你能提供一种计算这些圆盘/圆圈相交的质心坐标的方法吗?!< < /P> < P>让我们假设所有的圆重叠,这样就可以在其中一个点上跟踪任意点的路径。圆到任何其他圆中的任意点,同时只遍历由圆包含的点。并且,为了一般性,这些圆可能具有不同的半径

根据,您可以将此形状分解为单独的几何区域。也就是说,您可以通过单独考虑每个圆(即假装它们不重叠)来找到质心的中间值

不幸的是,有些圆重叠,因此您将对图形的区域进行两次计数。下图显示了这些重叠区域。因此,您必须找到圆交点的质心,并从中间质心中减去该质心(有关更多详细信息,请参见wiki页面的几何分解说明)

由于可以确定哪些圆重叠,所以只需对每个重叠对执行这些操作,然后每个空间区域将只计算一次。然后,问题就归结为找到圆交点的质心


您可以通过使用几何分解将每个相交透镜分解为通过一种方法给出的线段高度,并将结果与适当的坐标变换耦合,以旋转并将质心平移到相对于其中一个圆的中心的位置来找到这一点。

这不是特别的编程兴高采烈,所以你可以试着问一下。我看了质心上的,它似乎适用于重叠的形状。所以你所有的圆都以这样的方式重叠,形成一个单一的形状,是吗?好吧,反正有一个解决方法。是的,@MvG,不过如果我的答案正确,这可能是一个算法问题。@MvG,谢谢你介绍给我给我一个更合适的位置。你说的是两个圆的并集的质心,OP问的是两个圆的交点的质心。当然,OP的术语可能是颠倒的,因为交点可能是空的。我觉得没有注意到这一点很愚蠢,@KeithRandall。谢谢你的观点t!但我想我认为OP是在谈论联合。如果不是,上述方法就有了找到交点所需的所有部分。@KeithRandall,正如你所说,我真的是在谈论圆的交点。@Richard,我非常感谢你提供了一个鼓舞人心的详细答案!@YorkTsai,《数学世界的方程式》圆形交叉点和圆形线段并不像我希望的那样好。我对这个问题很感兴趣,正在写一个完整的解决方案。我会告诉你的。