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

Ruby 如何检测圆和块之间的碰撞?,ruby,math,geometry,rubygame,Ruby,Math,Geometry,Rubygame,可能重复: 我想检测圆与一般定位块的相交或碰撞。 块是矩形的,可以是任何大小或旋转 这背后的数学原理是什么?编写一个函数,检查任意线段ab是否与圆C相交。编写第二个函数,检查点p是否在圆C内。然后对四个矩形边调用第一个函数四次,如果所有这些都失败,则调用一个角上的第二个函数(检查矩形是否完全在圆内)。根据您对“碰撞”的定义,您可能还必须检查圆是否完全在矩形内 有多种方法可以加快计算速度,以防在实时模拟中调用数百万次。最明显的方法是首先检查包围圆C的正方形S,然后再进行(稍微)更昂贵的圆测试。

可能重复:

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


这背后的数学原理是什么?

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

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

看这里: