isConvex property

bool get isConvex

Whether this quadrilateral is convex

Implementation

bool get isConvex {
  final pts = vertices;
  bool? positive;
  for (int i = 0; i < 4; i++) {
    final p1 = pts[i];
    final p2 = pts[(i + 1) % 4];
    final p3 = pts[(i + 2) % 4];
    final cross =
        (p2.x - p1.x) * (p3.y - p2.y) - (p2.y - p1.y) * (p3.x - p2.x);
    if (cross != 0) {
      if (positive == null) {
        positive = cross > 0;
      } else if ((cross > 0) != positive) {
        return false;
      }
    }
  }
  return true;
}