Geometry 如何获取两个矩形的哪条边发生碰撞
我有一个几乎可以工作的物理系统。当两个对象碰撞时,每个对象都将调用其OnCollide函数,以便对碰撞做出正确反应 我的问题是如何正确处理x和y的碰撞。我知道矩形的一条边只能与另一条矩形的一条边碰撞。然而,我不知道数学来确定它是哪条边 那么,如果我只知道每个矩形的x、y、高度和宽度,我如何告诉矩形1哪个边与矩形2发生冲突Geometry 如何获取两个矩形的哪条边发生碰撞,geometry,computational-geometry,Geometry,Computational Geometry,我有一个几乎可以工作的物理系统。当两个对象碰撞时,每个对象都将调用其OnCollide函数,以便对碰撞做出正确反应 我的问题是如何正确处理x和y的碰撞。我知道矩形的一条边只能与另一条矩形的一条边碰撞。然而,我不知道数学来确定它是哪条边 那么,如果我只知道每个矩形的x、y、高度和宽度,我如何告诉矩形1哪个边与矩形2发生冲突 顺便说一句,我在c语言中工作经过一点尝试和错误,我终于找到了一个解决方案 首先,检查碰撞发生在哪个轴上最多。一旦确定了这一点,您只需比较该轴上的值,以查看其发生的方向。下面的p
顺便说一句,我在c语言中工作经过一点尝试和错误,我终于找到了一个解决方案 首先,检查碰撞发生在哪个轴上最多。一旦确定了这一点,您只需比较该轴上的值,以查看其发生的方向。下面的psudocode在翻译成您选择的语言时应该很好
if absoluteValue(box1.y - box2.y) > absoluteValue(box1.x - box2.x)
if box1.y > box2.y
box 1 is collding with the top of box 2
else
box 1 is colliding with the bottom of box 2
else
if box1.x < box2.x
box 1 is collding with the left of box 2
else
box 1 is collding with the right of box 2
这并没有考虑盒子的高度和宽度,但我认为在大多数情况下这不应该是一个问题。尽管你可能会遇到一些问题,比如如何处理轴线上尺寸相差很大的矩形。矩形可以旋转吗?如果没有,Xa