查找矩形边缘上绘制的直线的交点

Find intersecting points on rectangle edges for line drawn inside it

  1. 画一个矩形ABCD。
  2. 在其中画一条线连接任意两条边 GF.
  3. 画一条垂直平分线到 GF 线。

垂直平分线在什么点与矩形的边相交?

在下图中,从 (0, 2) 到 (6, 0) 绘制了 GF 线。我需要知道垂直平分线在哪里与 AB 和 CD 上的矩形相交。

矩形内线

GF 的中点

M.X = (G.X + F.X) / 2
M.Y = (G.Y + F.Y) / 2

垂直向量到 GF

D.X = G.Y - F.Y
D.Y = F.X - G.X

等分线的参数方程

X = M.X + t * D.X
Y = M.Y + t * D.Y

求解 X = XLeft, X = XRight, Y = YTop, Y = YBottom 的这些方程,您将得到交点

例如,首先求解方程XLeft = M.X + t * D.X 以找到与矩形左边缘的交点的参数t。

然后检查 Y' = M.Y + t * D.Y 是否在找到的 t 的范围 (YTop..YBottom) 内。

如果是,则平分线与左边缘相交于点 (XLeft, Y')