docs: def collide(self, s2):
          """ 判断图形是否碰到了另外一个图形 """
          s1 = self
          
          s1.update_points()
          s2.update_points()
  
          if not (s1.points and s2.points):
              return False
  
          t1 = s1.transform
          t2 = s2.transform
  
          t1.update_points(s1.points)
          t2.update_points(s2.points)
  
          # 更新外接矩形
          t1.update_collision_rect()
          t2.update_collision_rect()
  
          # simple collide rect
          if not (t1.min_x < t2.max_x and t1.max_x > t2.min_x \
                  and t1.min_y < t2.max_y and t1.max_y > t2.min_y):
              return False
  
          return points_in_points(t1, t2) or \
                 points_in_points(t2, t1) or \
                 lines_cross(t1, t2)