↑ 点击上面 “时代Java”关注我们,
关注新技术,学习新知识!
矩阵旋转算法在计算机图形学中,是一种应用非常广泛的变换,是一种称为仿射变换的特殊变换,在仿射变换中的基本变换包括平移、旋转、缩放、剪切这几种。
首先要明确旋转在二维中是绕着某一个点进行旋转,三维中是绕着某一个轴进行旋转。二维旋转中最简单的场景是绕着坐标原点进行的旋转,我们看下面矩阵数组的旋转:
算法实现代码(可在线编辑运行实例,请点击最下方的阅读原文):
public class NowJavaTest { 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 NowJavaTest().rotate(matrix); System.out.print("\n"); System.out.print("\n"); System.out.print("\n"); for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[0].length; j++) System.out.print(matrix[i][j] + " "); System.out.print("\n"); } }}
--
知识分享,时代前行!
~~ 时代Java
还有更多好实例……
↓↓↓请点击下面查看代码,可在线编辑运行。