2D中三角形和矩形(AABB)之间的碰撞测试

时间:2010-10-04 13:43:46

标签: geometry intersection aabb

我花了很多时间让交叉点在各种2D形状之间正常工作(圆圈,圆圈,圆圈,直肠 - 矩形 - 非常感谢那些已经解决了这些问题的人我从一个简单的项目中提取了我的解决方案,现在正在尝试实施三角形AABB交叉口测试。

然而,我有点卡住了。我已经尝试在线搜索并思考它然而我一直无法得到任何想法。给我目前最大问题的是检查当没有顶点位于矩形内时三角形的边缘(这是等腰btw)是否与矩形相交。

我有什么想法可以让它发挥作用吗?

编辑:为我们认为应该发生的阶段提供更多的见解:

1 - 检查矩形中是否有任何顶点(这部分很容易)。如果是,则发生碰撞,否则继续。

2 - 检查是否有任何边与矩形相交。这就是我被困住的地方。我不知道如何实现这个。

1 个答案:

答案 0 :(得分:1)

我会计算一组方程式,它们定义矩形的4条线,然后求解一组定义三角形线的方程式。

例如,gievn具有最低点(x1,y1)的矩形和一边具有g的渐变的矩形,矩形的一条线将是y = gx + y1。找到方程式来表示矩形的其他3个边。

形成三角形边的线将类似地计算。给出两点的线的等式是

y - y1 = (x - x1) * (y2 - y1)/(x2 - x1)

如果有任何可能的x& y值满足所有7个方程,那么你就有了一个交集。

编辑:我意识到虽然这是一个简单的算法,但编码可能很棘手;另一种选择是计算形成每条边的区间的公式(主要是具有最小值和最大值的线)并解决这些问题。