1

2x2 矩阵旋转

http://en.wikipedia.org/wiki/Rotation_matrix

假设我有(x,y)图像的 2D 像素,现在我想围绕 X 轴旋转这些像素。我可以使用上面的 2x2 矩阵吗?

什么时候使用 2x2 矩阵?这个 2x2 矩阵是如何使用的?

opengl 是在内部使用该矩阵还是 opengl 使用 3x3 矩阵?

上述 R 矩阵中的 theta 度数是如何测量的?它是(0,0)到(x,y)和(0,0)到(x',y')之间的角度吗?

4

2 回答 2

1

您想要做的是将您的点视为 1X2 矩阵并将其与 R 矩阵相乘。这将为您提供一个 2X1 矩阵,其中是新点。

[x] X [Cos(a) -Sin(a)] = [newX, newY]
[y] X [Sin(a) Cos(a)]

数学:
newX = xCos(a) -ySin(a)
newY = xSin(a) +yCos(a)

这将使点 (x,y)a围绕 (0,0) 点旋转大约度数。

请注意确保使用正确的尺寸(度数或弧度)与 a、Cos 和 Sin。

于 2012-05-01T05:56:07.377 回答
1

假设我有(x,y)图像的 2D 像素,现在我想围绕 X 轴旋转这些像素。我可以使用上面的 2x2 矩阵吗?

不,因为您不能在 2d 空间中围绕 x 轴(或任何其他轴)旋转任何东西。在二维空间中,您只能围绕一个点旋转(并围绕轴镜像)。您提供的矩阵围绕零点旋转(x = 0,y = 0)。另一件事是您旋转顶点或纹理坐标,而不是像素。您只能在 3d 空间中绕轴旋转。

opengl 是在内部使用该矩阵还是 opengl 使用 3x3 矩阵?

这由司机决定。最有可能的固定功能 OpenGL 在内部使用 4x4 矩阵(允许在 3d 空间中旋转+平移+投影)。但是,没有什么能阻止您编写将使用 2x2 矩阵的片段着色器。

上述 R 矩阵中的 theta 度数是如何测量的?它是(0,0)到(x,y)和(0,0)到(x',y')之间的角度吗?

答案是肯定的。它是 0;0 -> x';y' 和 0;0 -> x;y 之间的角度。但是,您仍然不能在 2D 中围绕“X 轴”旋转。您只能围绕一个点旋转。而且因为您的旋转矩阵是 2x2,所以您只能围绕 (0; 0) 点旋转、缩放、镜像和倾斜。对于需要移位/平移的任何其他内容,您需要 3x3 矩阵或 4x4 矩阵(即对 3d 向量进行 2d 操作,将 z 坐标设置为零)。

于 2012-05-01T06:46:41.933 回答