如何知道一个点是否或多或少属于一个圆?

How to know if a point belongs more or less to a circle?

我知道判断一个点是在圆内、圆外还是在圆上的公式:https://math.stackexchange.com/q/198769 这句话说明我们必须比较 dr(请阅读引用,只有5行).

但我只想知道一个点是否在圆上。此外,这才是真正的问题:如果一个点 有点 inside/outside 一个圆,我想将其视为在圆上。

我该怎么做?我试图在一个范围内划定 d-r(即:比较)。示例:

if(d-r > -100 && d-r < 100) { point is on the circle }

它适用于 -100 和 100,适用于半径较小的圆(即:所有 有点 outside/inside 圆的点都被认为作为在圈子上)。

但是对于大半径的圆,只有一些点被认为在圆上(即:只有一些有点outside/inside圆的点被认为在圆上)...

所以我希望所有有点 outside/inside 圆的点都被视为在圆上,与圆的半径无关。怎么样?

您对绝对差异的比较可能会写得更短

if Abs(d - r) < delta (i.e. 100) ...

但是你似乎需要像这样取决于圆半径的相对差异:

if Abs(d - r) / r  < reldelta (i.e. 0.001) ...

从概率的角度,您可以定义一种采用相对距离的距离图(@Mbo 提出的),并用它来构建每个点的概率分布。概率将表示点属于圆的一种可能性。直觉上,点越近,越有可能成为圆的一部分。例如:

rel_d = (d-r)/r;

//  P(x on the circle) = 1 - rel_d 
if(rel_d < 1){
     P_on_circle = 1 - rel_d;
}else{
     P_on_circle = 0;
}