计算点之间距离的逻辑

时间:2013-05-12 07:51:03

标签: python

我是否试图找到点[x1,y1]与以[c1,c2]为中心的半径为2的圆上最近点之间的距离? 我为此设计了以下等式

sqrt((p[0] - c[0]) ** 2 + (p[1] - c[1]) ** 2)

但答案却回答了一个似乎错误的答案......

我做错了什么?

3 个答案:

答案 0 :(得分:7)

您的公式计算到圆心的距离。减去半径,取绝对值。

radius = 2
abs(sqrt((p[0] - c[0]) ** 2 + (p[1] - c[1]) ** 2) - radius)

注意:是的,这适用于圈内或圈内的点。

答案 1 :(得分:0)

这将为您提供圆与圆的中心之间的距离,而不是圆周上的最近点

请参阅answer here了解算法

答案 2 :(得分:0)

您正在尝试最小化到圆周上某点的距离,因此我会使用一些微积分优化。解决方案是下面的(x,y)。

f(x, y) = (x - x1)^2 + (y - y1)^2 // the distance formula

(x - c1)^2 + (y - c2)^2 = 2 ^ 2 = 4 // the equation of the circle