Java实现旋转矩阵算法。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

矩阵旋转算法在计算机图形学中,是一种应用非常广泛的变换,是一种称为仿射变换的特殊变换,在仿射变换中的基本变换包括平移、旋转、缩放、剪切这几种。

首先要明确旋转在二维中是绕着某一个点进行旋转,三维中是绕着某一个轴进行旋转。二维旋转中最简单的场景是绕着坐标原点进行的旋转,我们看下面矩阵数组的旋转:

算法实现代码(可在线编辑运行实例,请点击最下方的阅读原文):

public class Main {

public void rotate(int[][] matrix) {

if (matrix == null)

return;

int N = matrix.length;

for (int i = 0; i < N / 2; i++) // This is the laxxxxyer

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");

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

还有更多好实例……

相关文档
最新文档