假设你有一条通过一堆数据集坐标生成的任意闭合曲线(端点返回相对接近第一个点),你如何找到结果形状的中心点和边界?
3 回答
您的问题有两种可能的解释(也许更多)。
@AakashM 已经解决了第一个问题,我们可以在下面的图中描述它:
其中红色方块是“边界”。
我会在这里引用@AakashM,因为我理解他的评论非常重要:“(我注意到,为了让你有一条闭合曲线,你需要端点不仅仅是'接近',而是与第一点重合)”
至于中心点,您至少有两种“自然方式”来使用这个定义来计算它:
- 中心点 = 红场的中点
- 中心点 = { 曲线 x 坐标的平均值,曲线 y 坐标的平均值}
两者都可以作为中心点,但结果会有所不同。
解决问题的另一种方法是找到曲线的凸包,如下图所示:
如果你用谷歌搜索它,你会发现找到凸包的算法,这里有一个很好的介绍。
同样,您有两种“计算中心点的自然方法:
- 中心点 = { 曲线 x 坐标的平均值,曲线 y 坐标的平均值}
- 中心点 = { CH 点的 x 坐标的平均值,CH 点的 y 坐标的平均值}
!
(我注意到,为了让您拥有一条闭合曲线,您需要端点不仅“接近”,而且与第一点重合)
如果“中心点”是指质心,并且假设密度均匀,那么这个问题就是你想要的。
如果“边界”是指边平行于轴的边界矩形,则只需要曲线上的最小和最大 x 和 y 值。
如果其中任何一个不是你的意思,请说...
对于边界,您可以参考@belisarius 和@AakashM 给出的答案。
至于中心点,你想要“质心”。好的 'ol Wikipedia 在http://en.wikipedia.org/wiki/Center_of_mass和http://en.wikipedia.org/wiki/Centroid有解释和食谱。
通常,计算质心与计算顶点的平均值会得到不同的结果。如果顶点不是均匀分布的,这种差异将很明显。