Frage

eine 4x4-Matrix gegeben, welche Formel I konnte mit jeder (x, y) Zelle anwenden ergeben, wurde ein (x, y), wenn die Matrix 90 Grad nach rechts gedreht? Ich habe versucht, über jede Zelle laufen, aber unterschiedliche Zellen gab verschiedene Formeln.

die folgende Matrix von Werten gegeben.

0|  |  |  |  |
1|  |  |  |  |  
2|  |  |  |  |    
3|  |  |  |  |
 -------------
  0   1  2  3  

Drehen Der Werte um 90 Grad durch den Wert im beweglichen (x, y) auf den (x, y) Wert in der passenden Zelle unter Verwendung der Matrix unter:

0 | 0,3 | 0,2  | 0,1 | 0,0 |
1 | 1,3 | 1,2  | 1,1 | 1,0 |  
2 | 2,3 | 2,2  | 2,1 | 2,0 |    
3 | 3,3 | 3,2  | 3,1 | 3,0 |
  --------------------------
     0     1      2     3

ie:

If cell (0,0) has the value 5, 
using the translation matrix 5 would move to (3,0).

Hard-Codierung diese Übersetzung Matrix ist mühsam und fehleranfällig, und wenn die Matrixgröße zu großer Zahl wächst dies von Hand tut, ist einfach verzögert.

War es hilfreich?

Lösung

Wenn Sie eine n von n Matrix haben, (i, j) unter der Annahme, bedeutet die ith Zeile und die jth Spalte, für eine Drehung nach rechts:

the cell (i, j) will move to (j, n-i)

Hier ist, wie man darüber nachdenkt. Bild, um die gesamte ith Reihe. Wenn Sie die Matrix drehen, dreht sich die gesamte Reihe in eine gesamte Spalte. Welcher? Es wird Spalten von rechts, das heißt Spalte i n-i werden.

Bild nun die gesamte jth Spalte. Wenn Sie drehen, schaltet sich die Kolonne in Reihe. Welcher? Es wird Reihen von oben j werden, das heißt, Zeile j.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top