getRotatedDimensions function

List<double> getRotatedDimensions(
  1. double angleInDegrees,
  2. double width,
  3. double height
)

Implementation

List<double> getRotatedDimensions(
  double angleInDegrees,
  double width,
  double height,
) {
  double angle = angleInDegrees * pi / 180;
  double sinValue = sin(angle);
  double cosValue = cos(angle);
  double x1 = cosValue * width;
  double y1 = sinValue * width;
  double x2 = -sinValue * height;
  double y2 = cosValue * height;
  double x3 = cosValue * width - sinValue * height;
  double y3 = sinValue * width + cosValue * height;
  List<double> sortX = <double>[0.0, x1, x2, x3];
  sortX.sort();
  List<double> sortY = <double>[0.0, y1, y2, y3];
  sortY.sort();
  double minX = sortX.first;
  double maxX = sortX.last;
  double minY = sortY.first;
  double maxY = sortY.last;

  return [((maxX - minX)).floorToDouble(), ((maxY - minY)).floorToDouble()];
}