JarsOfJam-Scheduler
JarsOfJam-Scheduler

Reputation: 3179

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

I know the formula to know if a point is inside, outside and on a circle : https://math.stackexchange.com/q/198769 This quote explains that we must compare d to r (please read the quote, it's only 5 lines).

But I just want to know if a point is ON a circle. Moreover, and that's the real problem : if a point is a bit inside/outside a circle, I want to consider it as ON the circle.

How could I do that ? I tried to delimit d-r (ie. : the comparison) in a range. Example :

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

It works, with -100 and 100, for circles with a little radius (ie. : ALL the points that are a bit outside/inside the circle are considered as being on the circle).

But for circles for a big radius, only SOME points are considered as being on the circle (ie. : only some of the points that are a bit outside/inside the circle are considered as being on the circle)...

So I would want that ALL the points that are a bit outside/inside the circle are considered as being on the circle, independently of the circle's radius. How ?

Upvotes: 0

Views: 63

Answers (2)

Nic
Nic

Reputation: 1310

From a probabilistic perspective, you could define a sort of distance map (as proposed by @Mbo) adopting the relative distance and use it to build a probability distribution on each point. The probability would represent a sort of likelihood of the point to belong to the circle. Intuitively, the closer the point, the more likely it is to be part of the circle. For example:

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;
}

Upvotes: 1

MBo
MBo

Reputation: 80325

Your comparison for absolute difference might be written shorter as

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

But seems you need relative difference depending on circle radius like this:

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

Upvotes: 2

Related Questions