@classmethod
def intersect(cls, seg1, seg2):
    ((p1, p2), (p3, p4)) = (seg1, seg2)
    t1 = cls.triangle_area(p1, p2, p3, signed=True)
    t2 = cls.triangle_area(p1, p2, p4, signed=True)
    t3 = cls.triangle_area(p3, p4, p1, signed=True)
    t4 = cls.triangle_area(p3, p4, p2, signed=True)
    return (((t1 * t2) < 0) & ((t3 * t4) < 0))
@classmethod
def intersect(cls, seg1, seg2):
    ((p1, p2), (p3, p4)) = (seg1, seg2)
    t1 = cls.triangle_area(p1, p2, p3, signed=True)
    t2 = cls.triangle_area(p1, p2, p4, signed=True)
    t3 = cls.triangle_area(p3, p4, p1, signed=True)
    t4 = cls.triangle_area(p3, p4, p2, signed=True)
    return (((t1 * t2) < 0) & ((t3 * t4) < 0))