1

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

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

但它返回的答案似乎是错误的答案......

我究竟做错了什么?

4

3 回答 3

7

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

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

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

于 2013-05-12T07:54:49.987 回答
0

这会给你点和圆心之间的距离,而不是圆周上最近的点

请参阅此处的答案以获取算法

于 2013-05-12T07:54:29.277 回答
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
于 2013-05-12T08:01:18.490 回答