给定一组二维坐标和每个坐标的半径,如何高效地找到所有至少有两个圆相交的点?
我知道两个圆最多相交2个点,因此可以通过对两个圆进行成对比较并循环整个数据集来完成,但是当真实数据集具有10000个圆时,执行所有成对比较将计算量过大。
以下是生成测试数据的示例代码。
library("plotrix")
set.seed(1995)
XCoordinate = sample(x = 1:100,size = 20)
set.seed(2000)
YCoordinate = sample(x = 1:100,size = 20)
set.seed(1997)
Radius = sample(x = 1:50,size = 20)
## Create DataFrame
TestData = data.frame(XCoordinate = XCoordinate,YCoordinate = YCoordinate,
Radius = Radius )
## Plot Circle
plot(TestData$XCoordinate, TestData$YCoordinate,
type="n", xlab="", ylab="" , main="Test draw.circle")
for(Row in 1:nrow(TestData)){
PlotCircle(TestData$XCoordinate[Row],
TestData$YCoordinate[Row],
TestData$Radius[Row])
}
我正在尝试找到附件中标记为黑色的所有点。