我有一组在指定空间中的矩形,它们可能具有不同的尺寸和位置。
我需要检测碰撞集群,即相互交叉的矩形组,就像附图中所示,其中我有两个集群(在红色框内)。
一个简单的方法是使用这些矩形的向量,并使用双重for
循环检查交集,例如:
for (size_t i = 0; i < rectangles.size(); i++) {
for (size_t j = i + 1; j < rectangles.size(); j++) {
if (rectangles.at(i).intersect(rectangles.at(j)) {
// Add rectangle[j] to cluster in which rectangle[i] is
}
}
我认为这不是执行微积分的最有效方式。
如何高效地计算这些聚类?我读到了一些关于使用四叉树进行平面划分的内容,但我不知道如何在这种情况下使用它们。这是适当的数据结构还是有更有效的方法(我必须在软实时中处理)。