好的,让A、B、C、D 成为定义随机四边形的点:
- 1 是分段 [AB]
- 2 是段 [BC]
- 3 是片段 [CD]
- 4 是段 [DA]
现在让E(左上)、F(右上)、G(左下)、H(右下)成为矩形的点。在您的图像中,您必须确定:
- 通过
E 的平行于 1 的方程(我们称之为 1')
- 通过
F 的 2 的平行方程(我们称之为 2')
- 经过
G 的 3 的平行方程(我们称之为 3')
- 通过
H 的 4 平行方程(我们称之为 4')
然后您可以计算它们的交点,从而为您提供所需的线。
让我们确定 1'(其他的类似):平行于 1 的所有线都具有与 1 相同的斜率。而这个斜率s1 由下式给出:
s1 = (yB - yA) / (xB - xA)
那么 1' 有一个像 y = s1 * x + b 这样的等式。由于我们希望这条线到达点E(xE, yE),所以我们有b:
yE = s1 * xE + b => b = yE - s1 * xE
然后 1' 具有等式:y = s1 * (x - xE) + yE。类似地,2' 代表方程 y = s2 * (x - xF) + yF,s2 由 B 和 C 的坐标确定,3' 和 4' 同上。
我们现在想要 1' 和 2' 的交点:这个点 I 有坐标验证这两条线的方程,所以:
yI = s1 * (x - xE) + yE
yI = s2 * (x - xF) + yF
所以:
s1 * (xI - xE) + yE = s2 * (xI - xF) + yF
给你xI然后yI:
xI = (s1 * xE - s2 * xF + yF - yE) / (s1 - s2)
yI = s2 * (xI - xF) + yF
= (s1 * s2 * xE - s1 * s2 * xF + s1 * yF - s2 * yE) / (s1 - s2)
你可以用同样的方法确定J(2'和3'的交点)、K(3'和4'的交点)和L(4'和1'的交点)的坐标.你想要的四边形由I、J、K和L这4个点组成。