我有一个带有布尔值的二维矩阵,它的更新频率很高。我想在矩阵中选择一个二维索引 {x, y},并在表中找到最近的“真”元素,而不需要遍历所有元素(矩阵很大)。
例如,如果我有矩阵:
0000100
0100000
0000100
0100001
我选择一个坐标{x1, y1}
,例如 {4, 3},我想返回最接近的“真”值的位置,在本例中为 {5, 3}。使用标准毕达哥拉斯方程测量元素之间的距离:
distance = sqrt(distX * distX + distY * distY)
哪里distX = x1 - x
和distY = y1 - y
。
我可以遍历矩阵中的所有元素并保留一个“真实”值列表并选择具有最短距离结果的那个,但它的效率极低。我可以使用什么算法来减少搜索时间?
详细信息:矩阵大小为 1920x1080,每帧大约进行 25 次查询。整个矩阵每帧更新一次。我正在努力保持合理的帧率,超过 7fps 就足够了。