forHead static method

Map<String, bool> forHead(
  1. Rect faceRect,
  2. Rect calculatedRect
)

Implementation

static Map<String, bool> forHead(Rect faceRect, Rect calculatedRect) {
  final foreheadHeight = faceRect.height * 0.25;
  const extraHeadMargin = 90.0;

  final foreheadRect = Rect.fromLTWH(
    faceRect.left,
    faceRect.top - extraHeadMargin,
    faceRect.width,
    foreheadHeight - 30,
  );

  final corners = [
    foreheadRect.topLeft,
    foreheadRect.topRight,
    foreheadRect.bottomLeft,
    foreheadRect.bottomRight,
  ];

  final paddedRect = calculatedRect.inflate(20); // Expand all sides

  final insideCount = corners.where((p) => paddedRect.contains(p)).length;

  final isForeheadMostlyInside = insideCount >= 2;
  final isForeheadTouchingBox = calculatedRect.overlaps(foreheadRect);

  return {
    'isForeheadMostlyInside': isForeheadMostlyInside,
    'isForeheadTouchingBox': isForeheadTouchingBox,
  };
}