如何找到两个矩形的碰撞中心?可以旋转矩形

Fel*_*ano 8 algorithm math polygon

我刚刚使用SAT和本文实现了碰撞检测,作为我实现的参考.检测工作正常,但我需要知道两个矩形在哪里发生碰撞.

我需要十字路口的中心 更多例子

我需要找到交叉点的中心,上面图像上的黑点(但我没有交叉区域).我发现了一些关于此的文章,但它们都涉及避免重叠或某种速度,我不需要这个.

我已经对矩形的信息是四点表示他们的upper right,upper left,lower rightlower left坐标.我正在尝试找到一种算法,可以给我这些点的交集.

我只需要在它上面放一个图像.就像两辆车坠毁所以我把图像放在碰撞中心的顶部.有任何想法吗?

dan*_*uio 3

还有另一种方法:通过采样点找到碰撞区域的质心。

创建以下函数:

bool IsPointInsideRectangle(Rectangle r, Point p);
Run Code Online (Sandbox Code Playgroud)

将搜索矩形定义为:

TopLeft = (MIN(x), MAX(y))
TopRight = (MAX(x), MAX(y))
LowerLeft = (MIN(x), MIN(y))
LowerRight = (MAX(x), MIN(y))
Run Code Online (Sandbox Code Playgroud)

其中 x 和 y 是两个矩形的坐标。

现在,您将定义一个步骤来像网格一样划分搜索区域。我建议您使用 AVG(W,H)/2,其中 W 和 H 是搜索区域的宽度和高度。

然后,如果每个网格点位于碰撞区域内,则迭代查找每个网格点:

IsPointInsideRectangle(rectangle1, point) AND IsPointInsideRectangle(rectangle2, point) 
Run Code Online (Sandbox Code Playgroud)

定义:

Xi : the ith partition of the mesh in X axis.
CXi: the count of mesh points that are inside the collision area for Xi.
Run Code Online (Sandbox Code Playgroud)

然后:

在此输入图像描述

当然,你也可以对 Y 做同样的事情。以下是此方法的说明性示例:

在此输入图像描述