math - 如何检测同一平面上的圆和任何其他圆之间的交点?

标签 math computational-geometry geometry

我正在寻找一种算法来检测一个圆是否与同一平面上的任何其他圆相交(假设一个平面上可以有多个圆)。

我发现的一种方法是进行分离轴测试。它说:

Two objects don't intersect if you can find a line that separates the two objects, i.e. a line such that all objects or points of an object are on different sides of the line.



但是,我不知道如何将这种方法应用于我的案例。

有谁能够帮助我?

最佳答案

两个圆相交当且仅当它们的圆心之间的距离在它们的半径之和与差之间。给定两个圆 (x0, y0, R0)(x1, y1, R1) ,公式如下:

ABS(R0 - R1) <= SQRT((x0 - x1)^2 + (y0 - y1)^2) <= (R0 + R1)

两边都平方让你避免慢SQRT ,如果您的输入是整数,则继续使用整数:
(R0 - R1)^2 <= (x0 - x1)^2 + (y0 - y1)^2 <= (R0 + R1)^2

由于您只需要是/否测试,因此此检查比计算确切的交点要快。

上述解决方案甚至适用于“一个圈内另一个”的情况。

关于math - 如何检测同一平面上的圆和任何其他圆之间的交点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8367512/

相关文章:

matlab - 用 Matlab 绘制不同半径下的热传导温度

math - Golang 基本三角反正切计算

c - (C) 中分母为 d 的约化分数数

algorithm - 随机放置没有重叠的矩形

javascript - Three.js:围绕物体的旋转?

rotation - "Mirroring"具有处理功能的 PShape 对象(旋转/平移问题)

math - 在 3d 空间中以匀速圆周运动围绕向量移动的点的位置

javascript - 优化我的猜测算法

matlab - 如何让 freeBoundary 尊重初始三角剖分顶点顺序。 (2017a+)

algorithm - 远离点集的查询点的 3D 最近邻