圆形和矩形之间的碰撞

ann*_*kaz 2 c c++ math

我想检测圆形和矩形之间的碰撞,但不知道如何.

我知道如何使用毕达哥拉斯定理检测圆与圆之间的碰撞,这是:

(x2 - x1)^ 2 +(y2 - y1)^ 2 - (r2 + r1),但检测碰撞的算法是什么

在C或C++编程语言中的圆形和矩形之间.

Wil*_*ill 7

在碰撞检测中,首先检测简单对象之间的碰撞然后专注于更复杂的对象通常是有益的.这称为宽相和窄相碰撞检测.我们的想法是,使用更简单的算法来排除碰撞首先会使对象变得更快,因为对象可以被证明不会发生碰撞.

您最初可以将所有对象建模为包含可能更复杂的真实形状的圆形或方框.如果发现这些对象发生冲突,则可以使用更复杂的算法来检查冲突.

众所周知,对于所有凸面物体,如果两个物体没有碰撞,那么你可以在它们之间找到一个平面.这被称为分离轴定理.由于圆和正方形都是凸的,因此可以使用它来设计算法来检测它们之间的碰撞.

您可以先搜索简单平面​​,例如平行于正方形边缘的平面以及与圆相切的平面.一个很好的选择是在物体的两个中心之间的线上与圆相切的平面,然后是圆心和每个角之间的线.

找到分离平面后,对象不会发生碰撞,您可以停止搜索.

希望这可以帮助.

(有关此应用的详细说明,请访问:http://www.metanetsoftware.com/technique/tutorialA.html#section1)