Having a circle with the centre $(x_c, y_c)$ with the radius $r$ how to know whether a point $(x_p, y_p)$ is inside the circle?
How to know if a point is inside a circle?
-
0Exactly, @PeterTamaroff. – 2012-09-18
4 Answers
The distance between $\langle x_c,y_c\rangle$ and $\langle x_p,y_p\rangle$ is given by the Pythagorean theorem as $d=\sqrt{(x_p-x_c)^2+(y_p-y_c)^2}\;.$ The point $\langle x_p,y_p\rangle$ is inside the circle if $d
The point is inside the circle if the distance from it to the center is less than $r$. Symbolically, this is $\sqrt{|x_p-x_c|^2+|y_p-y_c|^2}< r.$
-
0@BrianM.Scott That's a fair point. – 2012-09-18
Alex and Brian have answered your question already. In case you're trying to implement this algorithm in some programming language, here's my Haskell implementation:
distance :: Floating a => (a, a) -> (a, a) -> a distance (x1,y1) (x2,y2) = sqrt((x1-x2)**2 + (y1-y2)**2) isInsideCircle :: (Ord a, Floating a) => a -> (a, a) -> (a, a) -> Bool isInsideCircle r (xc,yc) (x,y) | (distance (xc,yc) (x,y) < r) = True | (distance (xc,yc) (x,y) >= r) = False
Suppose you have a circle whose radius is $r = 1$ and whose center is the origin $(0,0)$. You would like to know if $(\frac{1}{2},0)$, $(1,0)$, and $(1,1)$ are inside the circle. The following interactive GHCi session answers the question:
*Main> isInsideCircle 1 (0,0) (0.5,0) True *Main> isInsideCircle 1 (0,0) (1,0) False *Main> isInsideCircle 1 (0,0) (1,1) False
-
0@YuriySeredyuk That Kotlin code is unnecessary inefficient. Using Math.pow is a very inefficient way to multiply two numbers, especially because it takes a double as exponent. Math.abs is not necessary, because squaring a negative numbers will also result in a positive value. The square root is also not necessary when you multiply circleRadius with itself (Squaring both sides of the comparison). The only operations you need are addition, subtraction, and multiplying. – 2018-09-19
If you have the equation of the circle, simply plug in the x and y from your point (x,y). After working out the problem, check to see whether your added values are greater than, less than, or equal to the r^2 value. If it is greater, then the point lies outside of the circle. If it is less than, the point is inside the circle. If it is equal, the point is on the circle.