Nehmen wir an, ich habe Bild, das ich um 90 Grad in jede Richtung drehen muss und ich kann einfach nicht verstehen, wie das klar zu machen. Ich muss mit Matrix arbeiten, wo Breite - es ist X, und Höhe - es ist Y. Ich habe bereits ein Bild um 180 Grad gedreht, kann aber nicht 90 Grad herausfinden.Formel der rotierenden Matrix/Bild 90 Grad C++
Hier sind die Beispiele. Nehmen wir an, ich habe ein Bild 3x4 Pixel. Breite = 3, Höhe = 4, die Datenmenge in jeder Zelle - N = Width * Height = 3 * 4 = 12
. Lassen Sie uns die Matrix machen:
Die Formel leicht durch die Matrix gehen y*Width + x
ist. Und die Formel für unsere Dreh 180 Grad ist:
N - Width + x - y * Width
So haben wir:
DataOut [y * Width + x] = DataIn [N - Width + x - y * Width]
dieser Formel erhalten wir:
Aber ich kann nicht kommen mit der Formel der Drehung um 90 Grad. Kannst du mir bitte helfen?
Sie werden für diese Matrix-Multiplikationen benötigen, z.B. die 90 Grad Rotationsmatrix ist '[[0, -1], [1, 0]]' und die 180 Grad Matrix ist '[[-1, 0], [0, -1]] '. Multiplizieren Sie jeden Punkt mit der Matrix, um die gedrehte Position des Punktes zu erhalten. Für jeden Winkel "a" ist die Rotationsmatrix "[[cos (a), -sin (a)], [sin (a), cos (a)]]". – thebjorn