我正在尝试测量线段和矩形之间的重叠。例如,线段表示为 2 个点:
line = [(x1, y1), (x2, y2)]
和一个矩形作为 4 个点:
rect = [(x3, y3), (x4, y4), (x5, y5), (x6, y6)]
是否有一种有效的方法来测量两者之间重叠的长度(如果有)?
这是一个简单的图表:
编辑:澄清一下,线段可能与矩形部分相交,甚至根本不相交。
请您参考如下方法:
来自图片
我们有
P := (x2,y2) - (x1,y1) = (x2-x1, y2-y1)
Q := (x4,y4) - (x3,y3) = (x4-x3, y4-y3)
cos(α) := dotProduct(P,Q)/norm(P)norm(Q)
h := dist((x4,y4),(x5,y5))
在哪里
dotProduct((px,py),(qx,qy)) := px*qx + py*qy
norm(a,b) := sqrt(squared(a)+squared(b))
dist(A,B) = norm(B-A)
那么d可以计算为
d := h/sin(α) = h/(sqrt(1-squared(cos(α)))
