0
点赞
收藏
分享

微信扫一扫

【无标题】码蹄集判断两条线段相交

郝春妮 2022-04-30 阅读 74
python
def main(x1, y1, x2, y2,x3, y3, x4, y4):
    if ((max(x1, x2) >= min(x3, x4) and
            min(x1, x2) <= max(x3, x4)) and
        (max(y1, y2) >= min(y3, y4) and
            min(y1, y2) <= max(y3, y4))
    ):
        # 求向量
        ax = (x3-x1)*(y2-y1)-(y3-y1)*(x2-x1)
        ay = (x4-x1)*(y2-y1)-(y4-y1)*(x2-x1)
        bx = (x1-x3)*(y4-y3)-(y1-y3)*(x4-x3)
        by= (x2-x3)*(y4-y3)-(y2-y3)*(x4-x3)
        if ax * ay <= 0 and bx * by <= 0:
            return "YES"
        else:
            return "NO"
    else:
        return 'NO'


if __name__ == '__main__':
    arr1 = (input("").split(" "))
    arr2 = (input("").split(" "))
    x1 = float(((arr1[0].split('('))[1].split(','))[0])
    y1 = float((((arr1[0].split('('))[1].split(','))[1].split(')'))[0])
    x2 = float(((arr1[1].split('('))[1].split(','))[0])
    y2 = float((((arr1[1].split('('))[1].split(','))[1].split(')'))[0])

    x3 = float(((arr2[0].split('('))[1].split(','))[0])
    y3 = float((((arr2[0].split('('))[1].split(','))[1].split(')'))[0])
    x4 = float(((arr2[1].split('('))[1].split(','))[0])
    y4 = float((((arr2[1].split('('))[1].split(','))[1].split(')'))[0])
    print(main(x1, y1, x2, y2,x3, y3, x4, y4))


 

举报

相关推荐

0 条评论