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

我需要找到交叉点的中心,上面图像上的黑点(但我没有交叉区域).我发现了一些关于此的文章,但它们都涉及避免重叠或某种速度,我不需要这个.
我已经对矩形的信息是四点表示他们的upper right,upper left,lower right和lower left坐标.我正在尝试找到一种算法,可以给我这些点的交集.
我只需要在它上面放一个图像.就像两辆车坠毁所以我把图像放在碰撞中心的顶部.有任何想法吗?
还有另一种方法:通过采样点找到碰撞区域的质心。
创建以下函数:
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 做同样的事情。以下是此方法的说明性示例:

| 归档时间: |
|
| 查看次数: |
1251 次 |
| 最近记录: |