圆圈中2个点之间的距离

时间:2012-12-27 09:22:21

标签: algorithm math geometry

我在圈内得到2分。我必须在圆上找到一个点(不是在内部,而不是在外面),以便给定的2点和我发现的点之间的距离之和最小。我只需要找到最小距离,而不是点的位置。

3 个答案:

答案 0 :(得分:4)

这是minimization problem

minimize sqrt((x1-x0)^2 + (y1-y0)^2) +  sqrt((x2-x0)^2 + (y2-y0)^2)
             ^                                         ^
     (distance from point1)                (distance from point 2)

subject to constraints:
x1 = C1
y1 = C2
x2 = C3
x4 = C4
x0^2 + y0^2 = r^2 
(assuming the coordinates are already aligned to the center of the circle as (0,0)).
(C1,C2,C3,C4,r) are given constants, just need to assign them.

在分配x1,y1,x2,y2之后 - 给出了2个变量(x0,y0)和约束的最小化问题。 可以使用lagrange multiplier 解决最小化问题。

答案 1 :(得分:0)

设(x1,y1)和(x2,y2)是圆内的点,(x,y)是圆上的点,r是圆的半径。 您的问题会缩小为拉格朗日条件极值问题,即:

极值函数

f(x, y) = sqrt((x-x1)^2 + (y-y1)^2) + sqrt((x-x2)^2 + (y-y2)^2)

条件

g(x, y) = x^2 + y^2 = r^2  (1)

介绍辅助功能(reference):

Λ(x,y,λ)= f(x,y)+λ(g(x,y) - r ^ 2)

设∂Λ/∂x= 0,我们有:

(x-x1)/sqrt((x-x1)^2 + (y-y1)^2) + (x-x2)/sqrt((x-x2)^2 + (y-y2)^2) + 2λx = 0 (2)

让∂Λ/∂y= 0,我们有:

(y-y1)/sqrt((x-x1)^2 + (y-y1)^2) + (y-y2)/sqrt((x-x2)^2 + (y-y2)^2) + 2λy = 0 (3)

现在我们有3个变量(即x,y和λ)和3个方程(即(1),(2)和(3)),所以它是可以解决的。

请注意,应该有两种解决方案(除非两个内部点恰好是圆圈的中心)。一个是最小值(这是你需要的),另一个是最大值(将被忽略)。

答案 2 :(得分:0)

只是另一种方法(更直接):

为简单起见,假设圆为(0,0),半径为r 并假设两个点是P1(x1,y1)和P2(x2,y2)

我们可以计算这两个点的极角,假设它们是alpha1和alpha2 显然,圆上的点与P1和P2的最小距离之和在由alpha1和alpha2组成的圆形扇区内

同时,该扇区内圆上的点与P1和P2之间的距离之和是二次函数。因此,使用三分法可以找到最小距离。

figure: