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

时间:2017-04-01 15:34:53

标签: geometry coordinates computational-geometry

我知道一个公式,知道一个点是在内部,外部还是在一个圆圈上:https://math.stackexchange.com/q/198769这句话解释了我们必须将dr进行比较(请阅读引文, 只有5行)。

但我只是想知道一个点是否在圆圈。而且,这是真正的问题:如果一个点在圆圈内/外有点,我想把它视为圆圈。

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

  

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

对于半径较小的圆(即:所有在圆外/内的的点都被视为在圆上),它的工作原理为-100和100。

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

所以我希望圆圈外部/内部的所有点都被认为是在圆上,与圆的半径无关。怎么样?

2 个答案:

答案 0 :(得分:2)

您对绝对差异的比较可能会缩短为

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

但似乎你需要相对差异,这取决于圆半径,如下所示:

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

答案 1 :(得分:1)

从概率的角度来看,你可以定义一种距离图(由@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;
}