我正在尝试为圆交会实现扫描线算法,其中如果圆的原点之间的欧式距离小于等于两个半径的总和,则会发生交点。 (不包括圈子中的圈子)
我通过将圆定义为具有入口点和终点(上限和下限),将问题简化为扫掠线算法。 当到达上限最大值时,圆的左右最大值都会添加到状态中。状态由圆的最大值的x坐标排序。 here is an example of how the boundaries look like
原始的扫描线算法可让您在相交的状态下切换线段的索引。但是在这种情况下,即使两个圆相交,它们在给定点后仍会返回其原始顺序,因为它们是圆而不是连续线。
如果交点在两个圆的两半上,我也可以将交点定义为有效交点。
我愿意就如何定义算法的交集部分提出建议。或者,如果有遗漏的地方我没有注意到。