Java实现旋转矩阵算法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
还有更多好实例……