3d 检查矩形棱镜的哪个面发生碰撞

3d 检查矩形棱镜的哪个面发生碰撞,3d,collision-detection,game-physics,physics,collision,3d,Collision Detection,Game Physics,Physics,Collision,我正在制作一个3D物理引擎,使用简单的矩形棱镜碰撞,没有旋转 现在,我正在做的碰撞非常简单:(请参阅以获得一个漂亮的图形和更多信息) 设a和b为矩形棱柱体 如果发生以下情况,则发生碰撞: (a的最小x=b的最小x)和 (a的最小y=b的最小y)和 (a的最小z=b的最小z) 这很有效,但我需要知道矩形在哪个表面上碰撞,以确定如何反弹 是否有一个公式来检测两个矩形棱柱碰撞的面?如果两个矩形棱柱碰撞(即相交),导致碰撞的面将不明确: 为了确定面,您需要知道对象的向量。在我的场景中,我意识到导致碰

我正在制作一个3D物理引擎,使用简单的矩形棱镜碰撞,没有旋转

现在,我正在做的碰撞非常简单:(请参阅以获得一个漂亮的图形和更多信息)

设a和b为矩形棱柱体
如果发生以下情况,则发生碰撞:
(a的最小x=b的最小x)和
(a的最小y=b的最小y)和
(a的最小z=b的最小z)
这很有效,但我需要知道矩形在哪个表面上碰撞,以确定如何反弹


是否有一个公式来检测两个矩形棱柱碰撞的面?

如果两个矩形棱柱碰撞(即相交),导致碰撞的面将不明确:


为了确定面,您需要知道对象的向量。

在我的场景中,我意识到导致碰撞的面将是相交最少的面

这是因为在设置了其他两个轴之后,当试图使最后一个轴重叠时,它将在它们接近而不是接触之前停止

因此,
a max==b min
的轴是面所在的轴。 检查哪个是上下/左或右与检查一个对象是否在另一个对象的上方或下方/左侧或右侧一样简单

当然,这个解决方案只适用于我的场景,没有轮换

let a and b be rectangular prisms
collide if:
   (min x of a <= max x of b AND max x of a >= min x of b) AND
   (min y of a <= max y of b AND max y of a >= min y of b) AND
   (min z of a <= max z of b AND max z of a >= min z of b)