矩陣順逆時針旋轉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("\n");
 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("原圖像\n\n");
41     print(a); 
42     printf("\n\n順時針90\n\n");
43     print(shun90);
44     printf("\n\n逆時針90\n\n");
45     print(ni90);
46     printf("\n\n轉180\n\n");
47     print(zhuan180);
48     
49 
50     
51     
5

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM