@staticmethod
def intersect(A, B, P, Q):
    """
         判断两条线段AB和PQ是否相交（接触默认为不是相交）
         :param A: dict, 线段AB的起点
         :param B: dict, 线段AB的终点
         :param P: dict, 目标点, 要判断其是否在网格中, PQ的起点
         :param Q: dict, 以P为起点, 水平作一条线段到网格边界(最大横坐标处), 终点为Q
         :return: 返回布尔值是或否
        """
    if A['y'] > P['y'] and B['y'] > P['y'] or A['x'] < P['x'] and B['x'] < P[
        'x'] or A['y'] < P['y'] and B['y'] < P['y']:
        return False
    x = (P['y'] - A['y']) * (B['x'] - A['x']) / (B['y'] - A['y']) + A['x']
    if P['x'] < x <= Q['x']:
        print('有交点, 且交点在PQ之间', A, B)
        return True
    else:
        return False
