int rectangleRotation(int a, int b) {
int nb = 0;
int max = Math.max(a, b);
for (int i = -max; i <= max; i++) {
for (int j = -max; j <= max; j++) {
double[] unr = rotate(i, j, Math.PI * -45 / 180);
if (unr[0] >= -a / 2 && unr[0] <= a / 2 && unr[1] >= -b / 2 && unr[1] <= b / 2)
nb++;
}
}
return nb;
}
double[] rotate(int x, int y, double ang) {
double xp = x * Math.cos(ang) - y * Math.sin(ang);
double yp = x * Math.sin(ang) + y * Math.cos(ang);
return new double[] {xp, yp};
}