找到最接近一组圆的点

Posted

技术标签:

【中文标题】找到最接近一组圆的点【英文标题】:Finding closest point to a set of circles 【发布时间】:2014-03-12 11:24:28 【问题描述】:

我的要求是找到最接近三个圆圈的点。所以可以说三个圆圈是C1,C2,C3。我想在空间中找到一个点,使其与 C1、C2 和 C3 的距离之和为 MINIMUM。

给定点到圆的距离是给定点到圆上的点的距离,并且是圆与连接给定点和圆心的连线的交点。

有没有找到这样一个点的简单逻辑?

【问题讨论】:

【参考方案1】:

除非其中一个距离为零,否则圆半径是无关紧要的:到圆的距离之和将是到圆心的距离之和减去半径之和。因此,实际上您要求的是圆心的geometric median。您可能想iteratively compute an approximation。或者你利用你有三个个圆圈的事实,在这种情况下,中位数是它们的中心形成的三角形的Fermat point。

如果上述构造的点位于其中一个圆圈内,那么您可以在减少总和的同时向该圆圈移动。因此,您必须考虑该给定圆上的所有点,您可以将其表示为一个参数族。然后,您可以将距离计算为该参数的函数,以及结果公式的导数,并将其设置为零将为这种情况提供最佳解决方案。

【讨论】:

如果圆圈相交会发生什么?在那种情况下如何找到结果? @user3098199:更新了我的答案。 您能否提供一些示例的链接,说明如何使用这些导数以及如何求解这些方程? @user3098199:这本质上是一道数学题,与编程无关。因此在the Math SE 上可能会更好。特别是因为该网站使用 MathJax 进行强大的数学排版,SO lacks。 我相信网上一定有你所说的链接。如果可能的话,请分享

以上是关于找到最接近一组圆的点的主要内容,如果未能解决你的问题,请参考以下文章

给定一个目标总和和一组整数,找到与该目标相加的最接近的数字子集

如何用c语言从一组给定数中找到一个数或者几个数的和使其值最接近指定的数

在一组圆圈中找到完全覆盖的圆圈

如何用c语言从一组给定数中找到一个数或者几个数的和使其值最接近指定的数

最接近一组点的线[重复]

如何在没有直接连接列的两个数据框之间找到最接近的匹配行?