假设n个磁盘/圆共享一个公共区域,意味着它们中的每两个都相互交叉,我们知道它们的坐标(x1,y1,r1),(x2,y2,r2),...,( xn,yn,rn),其中xi,yi,rn分别代表x轴坐标,y轴坐标和第i个圆盘/圆的半径,你能提供一种计算质心坐标的方法吗?这些磁盘/圆圈的交叉点?!
答案 0 :(得分:1)
假设所有圆重叠,使得人们可以追踪从一个圆中的任何点到任何其他圆中的任意点的路径,同时仅遍历圆所包含的点。而且,一般来说,圆圈可能具有不同的半径。
根据wiki page,您可以将此形状分解为单独的几何区域。也就是说,你可以通过分别考虑每个圆圈来找到质心的中间值(即假装它们不重叠)。
不幸的是,有些圆圈重叠,因此您将对图形的区域进行两次计数。下图取自this page,显示了这些重叠区域。因此,您必须找到圆 - 圆交点的质心,并从中间质心中减去它(有关详细信息,请参阅维基页面的几何分解描述)。
由于您可以确定哪些圆重叠,只为每个重叠对执行这些操作,然后每个空间区域只计算一次。然后你的问题减少到找到圆圈交叉点的质心。
你可以通过使用几何分解将每个交叉的镜头分成circular segments,并通过方法here给出段的高度,并将结果与适当的坐标转换相结合来旋转和平移质心到相对于其中一个圆心的位置。