algorithm - 确定给定半径算法内的点

标签 algorithm geometry distance area

我不确定这是什么数学概念来支持我的问题。 ^^

假设我们有 PointA 作为引用。问题是在给定半径内找到 PointA 周围的点(使用坐标)。我的方法是计算每个点的距离(毕达哥拉斯),然后与给定的半径进行比较。我敢肯定,这在复杂性方面会很糟糕。

您可以推荐什么算法? 指出问题的示例代码将不胜感激。谢谢。

最佳答案

首先,我会围绕圆圈创建一个框,然后首先测试框内是否有任何东西。那么你可能一直在避免计算 sqrts 和 squares。选择框的一条边(比如左侧的一条边)并计算其 x 值:

xMin = xOrigin - radius

然后任何满足的东西

xTest < xMin

可以忽略。对所有四个面重复类似的操作。测试失败的那一刻,就停止在那个点上工作。不要做不必要的计算。

这告诉您一个点很近,但不一定在半径内。接下来计算:

abs(sqr(xOrigin - xTest) - sqr(yOrigin - yTest))

如果这小于 radius*radius(您预先计算以避免使用平方根),那么您在半径内有一个点。

这是我能想到的最好的方法,首先对数据进行预结构化。

关于algorithm - 确定给定半径算法内的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3939433/

相关文章:

java - 检查所有订单的运行时间是多少?

algorithm - 包含 x% 点的最小包围球

algorithm - Delaunay三角剖分和最大内切圆的混淆

python - 从 numpy 距离数组中提取 N 个最近的对

distance - Kademlia XOR度量标准属性用途

algorithm - 未连接的有向图顶点的最大子集的大小?

algorithm - 实时数据一致性检查的好算法

java - 打印数字系列 1,n,2,n-1,3,n-2,... 的逻辑应该是 1 到 n(给定的输入)

c# - 如何在 3D 三角形上的给定点 (x,z) 处找到 y?

excel - 用于确定位置之间距离的方法/工具