Skip to main content
 首页 » 编程设计

python之如何测量直线和矩形之间的重叠

2025年05月04日23傻小

我正在尝试测量线段和矩形之间的重叠。例如,线段表示为 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(α)))