如何计算两个矩形之间的最小距离?
对于没有角度(即0一度)的矩形来说很容易,但对于任何不同角度的旋转矩形我都不知道该怎么做.
你能推荐一下吗?
WhiteFlare
首先检查它们是否相交(尝试从一个矩形中获取点并检查它是否在其他矩形内)。
有几种方法可以做到这一点。一种方法(不是最好的方法,但很容易解释)如下。
让A1, A2, A3, A4- 矩形点,T- 其他一些点。
然后计算三角形的正方形:
S1 = (A1,A2,T), S2 = S(A2,A3,T), S3 = S(A3, A4, T), S4 = S(A4, A1, A2)。
设S_rectangle为反应角的平方。
然后T位于矩形 <=> 内S1 + S2 + S3 + S4 = S_rectangle。
如果反应角不彼此相交,则执行以下步骤。
计算2个矩形的所有8个点的坐标。
在所有 4 * 4 = 16 对点(来自不同矩形的点)中取最小值。
让我们来表示它min_1。
然后,从第一个矩形中取出一些点(4 种方法),
取出另一个矩形的 4 个线段(4 种方法),
检查从该点到该线段的垂直线是否位于线段内。
取这些垂线的最小值。让我们来表示它min_2。
与 中相同3,但从第二个矩形中获取点,从第一个矩形中获取线:
您得到min_3。
result = min(min_1, min_2, min_3)