我首先在圆圈周围创建一个盒子,然后首先测试盒子里面是否有任何东西.然后你可能总是避免一直计算sqrts和square.选择框的一个边(比如左边的那个)并计算其x值:
xMin = xOrigin - radius
然后任何满足的东西
xTest < xMin
可以忽略.对所有四个方面重复类似的事情.测试失败的那一刻,然后停止工作.不要做不必要的计算.
这告诉您一个点接近但不一定在半径范围内.接下来计算:
abs(sqr(xOrigin - xTest) - sqr(yOrigin - yTest))
如果这小于半径*半径(您预先计算以避免使用平方根),那么您在半径内有一个点.
这是我能够首先预先构建数据的最佳方法.