我们有一个点 (x,y) 和一组其他点 (xi,yi)。如何确定哪些点 (xi,yi) 在以中心点为 (x,y),半径为给定数字 r 的圆内?
(xi-x)**2 + (yi-y)**2 < r**2
简单的方法。
计算点到圆心的距离。如果小于半径,则在圆内。
我在一个PL/SQL过程中遇到了同样的问题。上面的解决方案完全正确,我也是这么做的。但它严重影响了我的PL/SQL程序性能。我使用了一个正方形代替那个圆形计算,因为可以在SQL语句本身中完成而无需进行此类计算。这样做将查询性能提高了10倍以上。