我是否试图找到点[x1,y1]与以[c1,c2]为中心的半径为2的圆上最近点之间的距离? 我为此设计了以下等式
sqrt((p[0] - c[0]) ** 2 + (p[1] - c[1]) ** 2)
但答案却回答了一个似乎错误的答案......
我做错了什么?
答案 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