两个不同角度的旋转矩形之间的最小距离

Whi*_*are 6 geometry

如何计算两个矩形之间的最小距离?
对于没有角度(即0一度)的矩形来说很容易,但对于任何不同角度的旋转矩形我都不知道该怎么做.

你能推荐一下吗?

WhiteFlare

Max*_*Max 1

  1. 首先检查它们是否相交(尝试从一个矩形中获取点并检查它是否在其他矩形内)。
    有几种方法可以做到这一点。一种方法(不是最好的方法,但很容易解释)如下。
    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. 计算2个矩形的所有8个点的坐标。

  3. 在所有 4 * 4 = 16 对点(来自不同矩形的点)中取最小值。
    让我们来表示它min_1

  4. 然后,从第一个矩形中取出一些点(4 种方法),
    取出另一个矩形的 4 个线段(4 种方法),
    检查从该点到该线段的垂直线是否位于线段内。
    取这些垂线的最小值。让我们来表示它min_2

  5. 与 中相同3,但从第二个矩形中获取点,从第一个矩形中获取线:
    您得到min_3

  6. result = min(min_1, min_2, min_3)