代码如下,cal_point = False 不输出交点,cal_point = True 输出交点
def cross(p1,p2,p3):#跨立实验
x1=p2.x-p1.x
y1=p2.y-p1.y
x2=p3.x-p1.x
y2=p3.y-p1.y
return x1*y2-x2*y1
def isIntersec(p1,p2,p3,p4,cal_point = False):
# 判断两线段是否相交
if(max(p1.x,p2.x)>=min(p3.x,p4.x) #矩形1最右端大于矩形2最左端
and max(p3.x,p4.x)>=min(p1.x,p2.x) #矩形2最右端大于矩形最左端
and max(p1.y,p2.y)>=min(p3.y,p4.y) #矩形1最高端大于矩形最低端
and max(p3.y,p4.y)>=min(p1.y,p2.y)): #矩形2最高端大于矩形最低端
if(cross(p1,p2,p3)*cross(p1,p2,p4)<=0
and cross(p3,p4,p1)*cross(p3,p4,p2)<=0):
D=1
else:
D=0
else:
D=0
if D:
if cal_point:
# 不同K值线段,求交点
tmpLeft_x = (p4.x - p3.x) * (p1.y - p2.y) - (p2.x