我有 2 个图像数组。图像根据透明度转换为数组。
例如下面这个 8x8 的图像就是透明度数组
0 0 0 1 1 0 0 0
0 0 1 0 0 1 0 0
0 1 0 0 0 0 1 0
1 0 0 0 0 0 0 1
1 0 0 1 1 0 0 1
0 1 0 0 0 0 1 0
0 0 1 0 0 1 0 0
0 0 0 1 1 0 0 0
我不知道如何检查其中两个数组之间的冲突,所以我没有任何代码,因为我不知道从哪里开始。我不想使用区域对象,因为将图像制作为区域对象需要很多时间。
重要:它们还有自己的 x、y、宽度和高度需要检查。
根据图像的位置,仅在 225 种不同的情况下可能发生或不发生碰撞(其中两个维度都有 8 个像素长度,图像位置在两个维度上的两个方向上的差异小于或等于 7)。
使用暴力,你可以准备一个查找表,然后只使用LUT来快速得到结果。
例如,差值 = D,x=维度 1,y=维度 2
Dx = 1, Dy = 1, result = true
Dx = 1, Dy = 2, result = false
...
Dx = 1, Dy = 7, result = ...
Dx = 1, Dy = -1, ...
Dx = 1, Dy = -2, ...
...
Dx = -1, dy = 1, ...
然后在性能关键区域时,只需从表中获取结果即可。
这是假设两个图像都是恒定的。当使用新的图像对时,需要新的查找表。 10000 个不同的图像将需要 5000 万个长度为 225 的查找表(如果两个图像都是 8x8 大小)。