isConvex property

bool get isConvex

Checks if the four corner points form a convex polygon.

Implementation

bool get isConvex {
  final pts = toList();
  bool? positive;
  for (int i = 0; i < pts.length; i++) {
    final p0 = pts[i];
    final p1 = pts[(i + 1) % pts.length];
    final p2 = pts[(i + 2) % pts.length];

    final dx1 = p1.dx - p0.dx;
    final dy1 = p1.dy - p0.dy;
    final dx2 = p2.dx - p1.dx;
    final dy2 = p2.dy - p1.dy;

    final cross = dx1 * dy2 - dy1 * dx2;
    if (cross == 0) continue;
    final isPositive = cross > 0;
    if (positive == null) {
      positive = isPositive;
    } else if (positive != isPositive) {
      return false;
    }
  }
  return true;
}