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')之间的角度吗?
您想要做的是将您的点视为 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。
假设我有(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 坐标设置为零)。