code: def isEmpty(self):
          
          if self.isRectangular:
              return False
          eps = 1e-5
          ul = Point()
          ur = (self.ur - self.ul).abs_unit
          lr = (self.lr - self.ul).abs_unit
          ll = (self.ll - self.ul).abs_unit
          if max(ur.y, lr.y, ll.y) - min(ur.y, lr.y, ll.y) < eps:
              return True
          return False
docs: Check if quad is empty retangle. If rectangular, we are done (not empty).
          But all 4 points may still be on one line. We check this out here.
          In that case all 3 lines connecting corners to ul will have same angle with
          x-axis.