矩阵旋转算法在计算机图形学中,是一种应用非常广泛的变换,是一种称为仿射变换的特殊变换,在仿射变换中的基本变换包括平移、旋转、缩放、剪切这几种。
首先要明确旋转在二维中是绕着某一个点进行旋转,三维中是绕着某一个轴进行旋转。二维旋转中最简单的场景是绕着坐标原点进行的旋转,我们看下面矩阵数组的旋转:
public class Main {
/**N o w J a v a . c o m**/
public void rotate(int[][] matrix) {
if (matrix == null)
return;
int N = matrix.length;
for (int i = 0; i < N / 2; i++) // This is the layer
for (int j = i; j < N - i - 1; j++) { // This is the offset to start
// swap
int t = matrix[i][j];
matrix[i][j] = matrix[N - j - 1][i];
matrix[N - j - 1][i] = matrix[N - i - 1][N - j - 1];
matrix[N - i - 1][N - j - 1] = matrix[j][N - i - 1];
matrix[j][N - i - 1] = t;
}
}
public static void main(String[] args) {
int[][] matrix = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15 }, { 16, 17, 18, 19, 20 },
{ 21, 22, 23, 24, 25 } };
for (int i = 0; i < matrix.length; i++) {/** from N o w J a v a . c o m**/
for (int j = 0; j < matrix[0].length; j++)
System.out.print(matrix[i][j] + " ");
System.out.print("\n");
}
new Main().rotate(matrix);
System.out.print("\n");
System.out.print("\n");
/**代码未完, 请加载全部代码(NowJava.com).**/
本文系作者在时代Java发表,未经许可,不得转载。如有侵权,请联系nowjava@qq.com删除。