1

如何判断一个圆是与外部矩形相切还是位于(部分)在二维欧几里得空间中的矩形之外?

矩形将始终与轴对齐。 圆矩形边界碰撞的可视化表示

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

4

1 回答 1

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 || ...

于 2012-06-08T10:25:20.300 回答