1
$\begingroup$

I am struggling with the following question. I'd like to check if a point on a circle is between two other points to check if the point is in the boundary. It is easy to calculate when the boundary doesn't go over 360 degrees. But when the boundary goes over 360 degrees (e.g. 270° - 180°), the second point is smaller than the first point of the boundary. And then I don't know how to check if my point on the circle is between the boundary points, because I cannot check "first boundary point" < "my point" < "second boundary point".

Is there an easy way to check this? Either a mathematical function or an algorithm would be good.

  • 1
    Hi. Wow, that's a lot o$f$ answers. I think it's easier when I say what I want to do with the function. I have a circle with a certain sector blocked. Say for example the sector between 90° and 180° is blocked (@Mike with increasing θ). I now want to check if a point on the circle is in this sector or not to see if it is a valid point or not.2011-11-22

2 Answers 2

1

You should put all of the angles involved into canonical form before testing. For example, let angles $a, b$ be given (corresponding to the locations of your two sector-limiting points). Reduce $a, b$ to the range $(0, 2\pi)$ by modulo operations. Then if $b add $2\pi$ to $b$. For each test, let us say of angle $c$, reduce $c$ to the range $(0, 2\pi)$, getting c'; if c' < a, add $2\pi$ to c' getting $c_t$, else set c_t=c'. Then $c$ is between $a$ and $b$ if $a \le c_t \le b$.

0

From the question comments with added symbols

I have a circle with a certain sector blocked. Say for example the sector between $a = 90°$ and $b = 180°$ is blocked. I now want to check if a point $P = (x,y)$ in the circle of center $C = (x_0,y_0)$ of radius $r$ is in this sector or not to see if it is a valid point or not.

In other words what you need is the angle the $PC$ line forms with the $x$ axis of your system of reference. And that's already been answered here:

$v = \arccos\left(\frac{xx_0 + yy_0}{\sqrt{(x^2+y^2) \cdot (x_0^2+y_0^2)}}\right)$

Notice that you still need to calculate the distance $\bar{PC}$ to make sure your point is in the circle to begin with.

  • 0
    Hmm. $\arccos$ takes values between -90 and +90 degrees, so I don't think this works. OTOH ATAN2 is designed to handle precisely this kind of questions.2012-01-22