精华内容
下载资源
问答
  • 矩阵旋转算法
    千次阅读
    2019-08-29 21:02:29

    矩阵旋转算法(该算法不需要创建额外的二维数组)

    public void rotate(int[][] matrix)
    {
    int length= matrix[0].length;
    int index= 0;
    for(int i=0;i<length/2;i++)
    {
    for(int j=index;j<length-index-1;j++)
    {
    int temp1= matrix[i][j];
    matrix[i][j]= matrix[length-j-1][i];
    int temp2= matrix[j][length-i-1];
    matrix[j][length-i-1]= temp1;
    int temp3= matrix[length-i-1][length-j-1];
    matrix[length-i-1][length-j-1]= temp2;
    matrix[length-j-1][i]= temp3;
    }
    index++;
    }
    }

    更多相关内容
  • leetcode矩阵旋转任意角度 数据结构 一. 线性表 1. 数组 数组具有随机访问特性,灵活使用数组的索引 数组有序的话,问题往往会变得简单 对于有序或局部有序的一维数组,要想到二分查找算法,并学会随机应变 对于元素...
  • 本3d模型在多方面查找出最合适的可用的程序改编而来,里面的3d模型是C#语言纯代码编写建立,无需任何模型插件,里面运行3维旋转矩阵对模型的空间位置坐标进行变换实现3维旋转算法适用于任何语言,代码注释清晰,...
  • JAVA算法矩阵旋转(JAVA代码)

    千次阅读 2019-06-04 20:52:29
    JAVA算法矩阵旋转(JAVA代码) 给定一个N*N的二维矩阵,顺时针旋转90度后,输出该矩阵。 例如: 给定矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 顺时针旋转90度后,输出结果: 13 9 5 1 14 10...

    JAVA算法:矩阵旋转(JAVA代码)

    给定一个N*N的二维矩阵,顺时针旋转90度后,输出该矩阵。

    例如:

    给定矩阵:

    1    2    3    4    
    5    6    7    8    
    9    10    11    12    
    13    14    15    16

    顺时针旋转90度后,输出结果:

    13    9    5    1    
    14    10    6    2    
    15    11    7    3    
    16    12    8    4


    算法设计

    package com.bean.algorithmexec;
    
    public class RotateMatrix {
    	
    	/*
    	 * 给定一个N*N的整形矩阵Matrix,把这个矩阵顺时针旋转90度,输入(打印)元素值。
    	 * 例如:
    	 *  1  2  3  4
    	 *  5  6  7  8
    	 *  9 10 11 12
    	 * 13 14 15 16
    	 * 输出结果为:
    	 * 	13 9  5 1
    	 *  14 10 6 2
    	 *  15 11 7 3
    	 *  16 12 8 4
    	 * 
    	 * 要求:额外空间复杂度为O(1)
    	 * */
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		//初始化一个 4*4的整形矩阵,从第一行第一列从左向右,第二行,第三行,直到第四行依次赋值 1,2,...16.
    				int[][] matrixDemo=new int[4][4];
    				matrixDemo=createMatrix();
    				printMatrix(matrixDemo);
    				
    				System.out.println();
    				//顺时针旋转90度打印
    				rotate(matrixDemo);
    				printMatrix(matrixDemo);
    	}
    
    	//顺时针旋转90度打印
    	private static void rotate(int[][] matrix) {
    		// TODO Auto-generated method stub
    		int tR=0;
    		int tC=0;
    		int dR=matrix.length-1;
    		int dC=matrix[0].length-1;
    		while(tR<=dR) {
    			rotateEdge(matrix, tR++, tC++, dR--,dC--);
    		}
    	}
    	
    	//顺时针旋转90度打印
    	private static void rotateEdge(int[][] matrix, int tR, int tC, int dR, int dC) {
    		// TODO Auto-generated method stub
    		int times=dC-tC;  // timies就是总的组数
    		int temp=0;
    		for(int i=0; i!=times;i++) {
    			//一次循环就是一组调整
    			temp=matrix[tR][tC+i];
    			matrix[tR][tC+i]=matrix[dR-i][tC];
    			matrix[dR-i][tC]=matrix[dR][dC-i];
    			matrix[dR][dC-i]=matrix[tR+i][dC];
    			matrix[tR+i][dC]=temp;
    			
    		}
    		
    		
    	}
    
    	//生成矩阵
    	private static int[][] createMatrix() {
    		// TODO Auto-generated method stub
    		int matrix[][]=new int[4][4];
    		int k=1;
    		for(int i=0;i<4;i++) {
    			for(int j=0;j<4;j++) {
    				matrix[i][j]=k;
    				k++;
    			}
    		}
    		
    		return matrix;
    	}
    	
    	//顺序打印矩阵元素
    	private static void printMatrix(int[][] matrix) {
    		for(int i=0;i<4;i++) {
    			for(int j=0;j<4;j++) {
    				System.out.print(matrix[i][j]+"\t");
    			}
    			System.out.println();
    		}
    		
    	}
    	
    }
    

     

    展开全文
  • 矩阵翻转问题矩阵旋转问题1. 逆时针旋转90度2. 顺时针旋转90度3. 旋转180度 矩阵旋转问题 或者图像旋转问题。 1. 逆时针旋转90度 逆时针旋转90度可以先沿左上到右下对角线翻转,再上下翻转。 如矩阵 1 2 3 4 5 6 7 8...

    矩阵旋转问题

    或者图像旋转问题。

    1. 逆时针旋转90度

    逆时针旋转90度可以先沿左上到右下对角线翻转,再上下翻转。
    如矩阵

    1 2 3
    4 5 6
    7 8 9
    

    首先对角线翻转,得到

    1 4 7 
    2 5 8
    3 6 9
    

    再上下翻转,得到

    3 6 9
    2 5 8
    1 4 7
    

    恰好是原矩阵逆时针旋转90度的结果。

    2. 顺时针旋转90度

    顺时针旋转90度可以先沿右上到左下对角线翻转,再上下翻转。
    如矩阵

    1 2 3
    4 5 6
    7 8 9
    

    首先对角线翻转,得到

    9 6 3
    8 5 2
    7 4 1
    

    再上下翻转,得到

    7 4 1
    8 5 2
    9 6 3
    

    恰好是原矩阵顺时针旋转90度的结果。

    48. 旋转图像
    实现:

    void rotate(vector<vector<int>>& matrix) {
            int n = matrix.size();
            if(n <= 1){
                return;
            }
            for(int i = 0; i < n-1; i++){
                for(int j = 0; j < n-1-i; j++){
                    int t = matrix[i][j];
                    matrix[i][j] = matrix[n-1-j][n-1-i];
                    matrix[n-1-j][n-1-i] = t;
                }
            }
            for(int i = 0; i < n / 2; i++){
                for(int j = 0; j < n; j++){
                    int t = matrix[i][j];
                    matrix[i][j] = matrix[n-1-i][j];
                    matrix[n-1-i][j] = t;
                }
            }
        }
    

    3. 旋转180度

    旋转180度通过一次上下翻转、一次左右翻转实现,两次翻转顺序不限。
    如矩阵

    1 2 3
    4 5 6
    7 8 9
    

    首先上下翻转,得到

    7 8 9
    4 5 6
    1 2 3
    

    再左右翻转,得到

    9 8 7
    6 5 4
    3 2 1
    

    恰好是原矩阵旋转180度的结果。

    展开全文
  • 主要介绍了Python3实现的旋转矩阵图像算法,涉及Python3列表遍历、切片转换、矩阵运算等相关操作技巧,需要的朋友可以参考下
  • 矩阵旋转算法

    千次阅读 2015-07-18 11:52:03
    对于 n*n矩阵旋转,取矩阵元素时从下标0开始,则(x,y)旋转后的位置为(y,n-1-x),在不考虑空间的情况下,可以遍历矩阵,根据旋转关系将元素填入新矩阵对应位置即可 伪代码为 for i = 0 to n -1  for j = 0 to n - ...

    对于 n*n矩阵旋转,取矩阵元素时从下标0开始,则(x,y)旋转后的位置为(y,n-1-x),在不考虑空间的情况下,可以遍历矩阵,根据旋转关系将元素填入新矩阵对应位置即可

    伪代码为

    for i = 0 to n -1

         for j = 0 to n - 1

             b[i][j] = a[j][n - 1 - i]

    这种算法的空间复杂度为O(n*n)

    另一种方法,空间复杂度为O(1)

    假设n=4

    最外层的旋转路线为:

    (0,0)->(0,3)->(3,3)->(3,0)->(0,0)

    (0,1)->(1,3)->(3,2)->(2,0)->(0,1)

    (0,2)->(2,3)->(3,1)->(1,0)->(0,2)

    次层旋转路线为:

    (1,1)->(1,2)->(2,2)->(2, 1)->(1,1)

    依此类推。

    代码如下

    #include <iostream>
    #include <iomanip>
    
    using namespace std;
    
    void rotate(int** matrix, int matrixRowSize, int matrixColSize) 
    {
    	int n = matrixRowSize;
    	int m = n / 2;
    	
    
    	for (int i = 0; i < m; i++) {
    		for (int j = i; j < n - 1 - i; j++) {
    			int startx = i, starty = j;
    			int x = startx, y = starty;
    			int newx = y, newy = n - 1 - x;
    			int tmp1 = *((int*)matrix + startx * matrixColSize + starty);
    			int tmp2;
    
    			while (newx != startx || newy != starty) {
    				tmp2 = *((int*)matrix + newx * matrixColSize + newy);
    				*((int*)matrix + newx * matrixColSize + newy) = tmp1;
    				x = newx, y = newy;
    				newx = y, newy = n - 1 - x;
    				tmp1 = tmp2;
    			}
    
    			*((int*)matrix + startx * matrixColSize + starty) = tmp1;
    		}
    	}
    
    }
    
    int main()
    {
    	const int n = 2;
    	int matrix[n][n] = { { 1, 2}, { 3, 4} };
    
    	cout << "before rotate:" << endl;
    	for (int i = 0; i < n; i++)
    	{
    		for (int j = 0; j < n; j++)
    		{
    			cout << right << setw(3) <<  matrix[i][j];
    		}
    		cout << endl;
    	}
    
    	rotate((int**)matrix, n, n);
    
    	cout << "after rotate:" << endl;
    	for (int i = 0; i < n; i++)
    	{
    		for (int j = 0; j < n; j++)
    		{
    			cout << right << setw(3) << matrix[i][j];
    		}
    		cout << endl;
    	}
    	return 0;
    }



    展开全文
  • 旋转矩阵算法

    千次阅读 2015-07-31 17:47:55
    旋转矩阵是计算机图形学里面的基础内容。之前我还写过一篇计算机图形学基础知识的总结 操作的步骤可以分为两部,一是沿正对角线对称,二是沿水平对称轴对称 原图: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 =...
  • 矩阵旋转90算法

    千次阅读 2020-09-16 18:36:59
    以下是c语言的矩阵旋转90度的代码 #include <iostream> #include <stdio.h> #include <math.h> #include <algorithm> #include <vector> #include <deque> #include <string...
  • C++算法旋转图像---翻转矩阵

    千次阅读 2019-06-13 14:37:27
    题目: ...请不要使用另一个矩阵旋转图像。 示例 1: 给定 matrix = [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入矩阵,使其变为: [ [7,4,1], [8,5,2], [9,6,3] ] 示例 2: 给定 matr...
  • 矩阵旋转的两种方法

    千次阅读 2018-10-10 11:11:15
    方法一:需要开辟额外的空间 void rot(){ int i,j,c[40][40]; for(i = 1; i &lt;= n; ++i){ for(j = 1; j &lt;= n; ++j){ c[j][n-i+1] = b[i][j]; } } for(i = 1; i &... ++i)...
  • 转载自:... 今天仍然来分析一个与数组操作相关的算法,是关于二维数组旋转问题的。 问题描述 原文 You are given an n × n 2D matrix representing an image.  Rotate the image by 90
  • 今天小编就为大家分享一篇python实现回旋矩阵方式(旋转矩阵),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • MATLAB算法 绘制旋转矩阵 XYZ 三个轴 RGB red green blue
  • 矩阵旋转 C++

    千次阅读 2020-07-17 11:11:07
    矩阵按顺时针旋转90度,逆时针旋转90度,和旋转180度。 #include "stdio.h" void main() { int a[5][6]={1,2,3,4,5,6, 2,3,8,9,2,5, 2,9,7,9,4,8, 6,3,8,1,9,3, 9,3,5,2,8,5,}; int s90[6][5],N90[6][5],...
  • 算法——正方形矩阵旋转90度

    千次阅读 2019-07-22 15:00:10
    旋转正方形矩阵 【题目】 给定一个整型正方形矩阵matrix,请把该矩阵调整成顺时针旋转90度的样子。 【要求】 额外空间复杂度为O(1)。 【例如】 旋转前: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 旋转后: 13 9 ...
  • 关于矩阵旋转算法的实现

    千次阅读 2006-12-18 22:44:00
    题目描述:将一个N*N方阵旋转四次,再回到原来的样子,过程如下(以N=3为例): 1 2 3 4 5 6
  • 题目Given an image represented by an NxN matrix, where each pixel in the image is 4 bytes, write a method to rotate the image by ...一张图像表示成NxN的矩阵,图像中每个像素是4个字节,写一个函数把图像旋...
  • c++ 旋转矩阵(回型矩阵

    千次阅读 2020-02-18 10:10:09
    c++旋转矩阵(回型矩阵) 思路: 1.从对角线切换开,如图例所示,从外圈向内圈循环,按着 从左至右 从上之下 从右至左 从下到上 依次循环 例如n=5,第一圈时 从左到右 1,2,3,4 从上之下 5,6,7,8 从右至左 9...
  • 一维插值算法旋转矩阵;大气系数建模;大地系转地心系的;落点预报;数值计算;坐标转换;优化算法;空间直角坐标系
  • 针对当前混沌图像加密算法存在的安全缺陷问题,提出了一种基于滑块与矩阵旋转的混沌图像加密算法。在像素位置置乱过程中根据明文图像自身特点,产生与明文图像紧密相关的混沌系统控制参数;旋转图像子矩阵块来打乱...
  • 前言 本文主要是计算两个激光雷达之间的变换矩阵,即计算两组点云之间的变换矩阵。其中处理的点云数据主要是由x,y,z,...然后基于SVD算法求出两个对应点集合的旋转矩阵R和转移矩阵t。 一、基于ICP匹配对应点
  • 针对传统视觉伺服控制算法易使目标物品脱离摄像机视野而致伺服失败的缺点,从表征当前摄像机坐标系与期望摄像机坐标系姿态关系的旋转矩阵中分解出了等效转轴和等效转角,利用它们构造了一种可以有效控制摄像机朝向的...
  • 三维旋转平移矩阵求解 三维旋转平移矩阵求解 三维旋转平移矩阵求解 三维旋转平移矩阵求解 三维旋转平移矩阵求解
  • Matlab矩阵旋转45度

    千次阅读 2019-12-17 09:52:43
    1.函数曲线 x=linspace(-2,2); y=x.^2; A=[cosd(-45) -sind(-45);sind(-45) cosd(-45)]*[x;y]; figure; plot(x,y,'r',A(1,:),A(2,:)); axis equal;...2.图像旋转~=矩阵旋转 mat = [1 2 3;4 5 ...
  • 主要介绍了Java实现的求逆矩阵算法,涉及java基于数组的矩阵遍历与运算相关操作技巧,需要的朋友可以参考下
  • 这就不可避免的要计算代价函数或者量测模型对旋转矩阵的导数。一般涉及到对旋转矩阵求导,我们首先都会想到李群、李代数、李导数。这里我们用另一种思路来对旋转矩阵求导,不过本质上还是用到了李群、李代数的基础...
  • 讲述四元数和旋转矩阵之间相互转化的学术论文:首先介绍了四元数和旋转矩阵在实现向量旋转中的应用,在此基础上,根据游戏...最后,重点分析了由旋转矩阵到四元数的转换算法,并按照计算机程序设计的特殊要求设计了程序。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 53,883
精华内容 21,553
关键字:

矩阵旋转算法

友情链接: svefnpu.rar