我正在制作一个三维物理引擎与简单的矩形棱镜碰撞,没有旋转。
现在,我做的碰撞非常简单:(参见本网站获得一个很好的图形和更多的信息)
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)
这样做很好,但我需要知道矩形是在哪个表面上碰撞的,才能知道如何反弹。
,是否有一个公式来检测哪个面的长方形棱镜与之相撞?
发布于 2018-08-06 19:15:25
如果两个矩形棱镜发生碰撞(即相交),那么造成碰撞的是哪些面是模糊的:
您需要知道对象的向量才能确定面孔。
发布于 2018-08-06 19:42:56
在我的场景中,我意识到造成碰撞的那张脸是相交最少的那张脸。
这是因为在设置了另外两个轴之后,当试图使最后一个轴重叠时,它会停止,直到它们比触摸更接近。
因此,a max == b min
所在的轴就是脸所在的轴。检查哪个是上或下/左或右,就像检查一个对象是否在另一个对象的上方或下面/左或右一样简单。
当然,这个解决方案只适用于我的场景,没有轮换。
https://stackoverflow.com/questions/51718265
复制