查找矩形边缘上绘制的直线的交点
Find intersecting points on rectangle edges for line drawn inside it
- 画一个矩形ABCD。
- 在其中画一条线连接任意两条边 GF.
- 画一条垂直平分线到 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')
- 画一个矩形ABCD。
- 在其中画一条线连接任意两条边 GF.
- 画一条垂直平分线到 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')