Javascript (ES6) code to rotate a Image or a 2D square matrix in place:
const rotate = (matrix) => {
const n = matrix.length;
for (let layer = 0; layer < Math.floor(n / 2); layer++) {
for (let i = layer; i < n - layer - 1; i++) {
const temp = matrix[layer][i];
matrix[layer][i] = matrix[n - i - 1][layer];
matrix[n - i - 1][layer] = matrix[n - layer - 1][n - i - 1];
matrix[n - layer - 1][n - i - 1] = matrix[i][n - layer - 1];
matrix[i][n - layer - 1] = temp;
}
}
};
Demo
Output
rotate([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
]);
/*
[
[7, 4, 1],
[8, 5, 2],
[9, 6, 3],
]
*/