Circle-Rectangle的边界碰撞检测

时间:2012-06-08 10:15:12

标签: math geometry collision-detection

如何确定圆是否与2D欧几里德空间中的外部矩形相切或位于(部分)矩形之外

矩形将始终与轴对齐。 Visual representation of a circle-rectangle's border collision

基本上我正在用一个球创造一个简单的游戏,它以一定的角度在空间中移动。

1 个答案:

答案 0 :(得分:3)

让我们从顶部开始,顺时针方向移动,表示矩形s1, s2, s3, s4的四边。

检查圆圈中心到四条线的距离; d1, d2, d3, d4(编号对应于边)。请注意,有一个简单的公式可以推导出从点到线的(正交)距离。

必要(但不充分)条件是与其中一条线的距离是半径长度(实际上差值小于您选择的某个增量值):
|d1 - r| < delta || ...

如果圆圈完全位于矩形内部,则可以使其成为足够的条件,如果每个距离小于矩形的相应边之间的距离,则减去半径,这是正确的:
d1 <= |s1 - s3|-r && d2 <= |s2 - s4|-r && ...

部分检查外部就像检查最后一段的相反一样简单(如果需要,检查半径是否仍在框内):
d1 > |s1 - s3|-r || d2 > |s2 - s4|-r || ...

相关问题