如何检测圆与块之间的碰撞?

时间:2012-08-09 11:57:27

标签: ruby math geometry rubygame

  

可能重复:
  Circle-Rectangle collision detection (intersection)
  How to determine the collision of a circle with a rectangle?

我想检测圆与一般定位块的交叉或碰撞。 该块是矩形的,可以是任何大小或旋转。

这背后的数学是什么?

1 个答案:

答案 0 :(得分:0)

编写一个函数,检查任意段 ab 是否与圆 C 相交。编写第二个函数,检查点 p 是否在圆 C 中。然后调用第一个函数四次,对于四个矩形边,如果所有这些都失败,则在一个角上调用第二个函数(以检查矩形是否完全在圆内)。根据您对“碰撞”的定义,您可能还需要检查圆圈是否完全位于矩形内部!

如果您要在实时模拟中调用数百万次,有多种方法可以加快计算速度。最明显的是首先检查围绕圆 C 的方 S ,然后才进行(略微)更昂贵的圆测试。