检查两个数组之间的碰撞

问题描述 投票:0回答:1

我有 2 个图像数组。图像根据透明度转换为数组。

example

例如下面这个 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、宽度和高度需要检查。

java arrays swing collision-detection area
1个回答
0
投票

根据图像的位置,仅在 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 大小)。

© www.soinside.com 2019 - 2024. All rights reserved.