zoukankan      html  css  js  c++  java
  • 矩阵顺逆时针旋转90度180度

    ,用线性数的知识,找到基向量的位置。在通过旋转基向量来旋转矩阵。

    基向量的位置如图,因为在矩阵中是以左上为起点的。所以第一维的箭头应该是向下的。

      

    顺时针旋转90度,基向量位置如下,旋转矩阵为,所以旋转后的坐标为×=

     

    逆时针旋转90度,基向量如下,旋转矩阵为,所以旋转后的坐标为×=

    旋转180度,基向量如下,旋转矩阵为,所以旋转后的坐标为×=

    以C语言10*10的矩阵为例,因为C语言二维数组没有负数,因此旋转后整体移了10个单位。

     1 #include<stdio.h>
     2 void print(int a[][10]){
     3     for(int i=0;i<10;i++){
     4     for(int j=0;j<10;j++){
     5         printf("%3d",a[i][j]);
     6     }
     7     printf("
    ");
     8     }
     9 }
    10 int main(){
    11     int a[10][10];
    12     int k = 0;
    13     //原图像 
    14     for(int i=0;i<10;i++){
    15         for(int j=0;j<10;j++){
    16             a[i][j] = k++;
    17         }
    18     } 
    19     //顺时针旋转90 
    20     int shun90[10][10];
    21     for(int i=0;i<10;i++){
    22         for(int j=0;j<10;j++){
    23             shun90[j][9-i] = a[i][j];
    24         }
    25     }
    26     //逆时针旋转90 
    27     int ni90[10][10];
    28     for(int i=0;i<10;i++){
    29         for(int j=0;j<10;j++){
    30             ni90[9-j][i] = a[i][j];
    31         }
    32     }
    33     //旋转180 
    34     int zhuan180[10][10];
    35      for(int i=0;i<10;i++){
    36         for(int j=0;j<10;j++){
    37             zhuan180[9-i][9-j] = a[i][j];
    38         }
    39     }
    40     printf("原图像
    
    ");
    41     print(a); 
    42     printf("
    
    顺时针90
    
    ");
    43     print(shun90);
    44     printf("
    
    逆时针90
    
    ");
    45     print(ni90);
    46     printf("
    
    转180
    
    ");
    47     print(zhuan180);
    48     
    49 
    50     
    51     
    5

  • 相关阅读:
    SHELL种类,版本及选择
    delete
    ctrl+alt+l:linux 锁屏 win+l:windows锁屏
    inux关于readlink函数获取运行路径的小程序
    网络版shell之网络编程练习篇--telnet服务端
    CentOS 6.5配置nfs服务
    linux操作系下RAR的使用
    BLOB二进制对象(blob.c/h)
    循环队列
    java的System.getProperty()方法能够获取的值
  • 原文地址:https://www.cnblogs.com/lolybj/p/9588059.html
Copyright © 2011-2022 走看看