查找给定圆心和半径的圆内是否有点

5
我们有一个点 (x,y) 和一组其他点 (xi,yi)。如何确定哪些点 (xi,yi) 在以中心点为 (x,y),半径为给定数字 r 的圆内?

可能是因为这个问题与编程边缘有关,所以才会这样。 - John
5个回答

16
(xi-x)**2 + (yi-y)**2 < r**2

1
如果您想包括圆上的点,除了其中的点之外,请使用<=。 - Maple

6

简单的方法。

计算点到圆心的距离。如果小于半径,则在圆内。


3
如果 (xi - x)^2 + (yi - y)^2 小于 d^2,它在圆内。如果等于 d^2,则在圆上。如果大于 d^2,则在圆外。

2
如果 sqrt((xi-x)^2 + (yi-y)^2) <= d,则成立。

2
你可以进行优化。为了提高性能,请省略SQRT。(xi-x)^2 + (yi-y)^2 <= d ^2 - Andrew Keith

0

我在一个PL/SQL过程中遇到了同样的问题。上面的解决方案完全正确,我也是这么做的。但它严重影响了我的PL/SQL程序性能。我使用了一个正方形代替那个圆形计算,因为可以在SQL语句本身中完成而无需进行此类计算。这样做将查询性能提高了10倍以上。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接