假设我有图像,我需要在任何方向旋转90度,而我无法理解如何做到这一点。我需要使用矩阵,其中宽度 - 它是X,高度 - 是Y.我已经完成180度旋转图像,但无法计算出90度。旋转矩阵/图像的公式90度C++
下面是例子。假设我有一个3x4像素的图像。宽度= 3,高度= 4,每个单元中的数据量 - N = Width * Height = 3 * 4 = 12
。让我们把矩阵:
的公式可以轻松地去通过矩阵是y*Width + x
。而对于我们的180度旋转的计算公式为:
N - Width + x - y * Width
因此,我们有:
DataOut [y * Width + x] = DataIn [N - Width + x - y * Width]
使用这个公式,我们得到:
但我不能想出与旋转90度的公式。你能帮我吗?
你需要为此,例如矩阵乘法90度旋转矩阵为[[0,-1],[1,0]],180度矩阵为[[-1,0],[0,-1]]'。将每个点与矩阵相乘以得到点的旋转位置。对于任何角度'a',旋转矩阵为[[cos(a), - sin(a)],[sin(a),cos(a)]]'。 – thebjorn