有两个点形成了一条线段需要判断两条线段是否相交相交返回True否则返回Falsepython怎么写程序
以下是判断两条线段是否相交的Python代码:
def intersect(line1, line2):
x1, y1 = line1[0]
x2, y2 = line1[1]
x3, y3 = line2[0]
x4, y4 = line2[1]
den = (y4-y3)*(x2-x1)-(x4-x3)*(y2-y1)
if den == 0: # 线段平行
return False
ua = ((x4-x3)*(y1-y3)-(y4-y3)*(x1-x3)) / den
ub = ((x2-x1)*(y1-y3)-(y2-y1)*(x1-x3)) / den
if 0 <= ua <= 1 and 0 <= ub <= 1: # 线段相交
return True
else: # 线段不相交
return False
其中,函数intersect接受两个参数line1和line2,分别表示两条线段的两个端点坐标。函数先将坐标解包,然后计算出两条线段的交点,如果交点在两条线段内部,则判定为相交,返回True;否则,判定为不相交,返回False
原文地址: https://www.cveoy.top/t/topic/fax6 著作权归作者所有。请勿转载和采集!