如何检测旋转矩形相互碰撞

15 浏览
0 Comments

如何检测旋转矩形相互碰撞

鉴于多次看到这个问题,并且回答了旧的(不可用的)代码后,我决定重新做一切,并发表相关文章。

“矩形”由以下内容定义:

- “中心”:他的位置的x和y坐标(请记住,0;0是左上角,所以y向下)

- “大小”:他的宽度和高度的x和y坐标

- “角度”:他的旋转角度(以度为单位,0度是沿OX轴顺时针旋转)

“目标”是判断两个矩形是否发生碰撞。

0
0 Comments

如何检测旋转矩形之间的碰撞?

这个问题的出现的原因是为了检测两个旋转的矩形是否发生了碰撞。解决这个问题的方法是使用角落在另一个矩形的两个轴上的投影。

具体步骤如下:

1. 找到矩形的轴

- 创建两个向量,分别代表矩形的X轴和Y轴。

- 将这两个向量旋转,使其与矩形的轴对齐。

2. 使用矩形的轴来获取角落

- 延长轴的长度,以获取矩形宽度和高度的一半。

- 将角落的坐标计算出来。

3. 获取角落的投影

- 对于每个角落,计算它在另一个矩形的两个轴上的投影坐标。

4. 在投影上选择外部角落

- 创建一个向量,表示从矩形中心到投影角落的向量。

- 使用向量的大小来计算距离。

- 使用点积来判断向量是否与轴的方向相同。

5. 最后,进行投影测试

- 使用简单的一维测试来判断投影是否相交。

通过测试所有四个投影,就可以得出最终结果。

以上是解决这个问题的详细步骤。希望对大家有所帮助!

0