好吧,首先,我知道网络上到处都是类似的问题,我查看的内容比我想数的要多,我已经尝试弄清楚了将近 3 周(不是经常,只是断断续续,希望能激发洞察力)。
最后,我想要得到的是一个函数,您可以在其中传递要旋转多少(目前我正在使用弧度,但我可以使用度数或弧度)并返回旋转矩阵,保留任何我有的翻译。
我理解在二维笛卡尔平面中沿“Z”轴旋转的公式是:
[cos(radians) -sin(radians) 0]
[sin(radians) cos(radians) 0]
[0 0 1]
我确实很好地理解矩阵数学(加法,减法,乘法和行列式/逆),但我不明白的是如何一步一步地制作一个我可以用于旋转的矩阵,保留任何翻译(和其他任何东西,比如规模)它有。
根据我从其他示例中收集到的信息,是将我当前的矩阵(不管是什么,现在我们只使用一个身份矩阵)乘以这样的矩阵:
[cos(radians) - sin(radians)]
[sin(radians) + cos(radians)]
[1]
但是我原来的矩阵最终会变成 3x1 矩阵而不是 3x3,不是吗?我不确定我错过了什么,但我觉得有些不对劲。我不一定要找人为我写的代码,只是为了了解如何正确地做到这一点,然后我可以自己编写。(并不是说我不会看别人的代码:))
(不确定它是否对任何人都重要,但以防万一,使用 Windows 7 64 位、Visual Studio 2010 Ultimate,我相信 OpenGL,这是为 Uni 准备的)
当我们这样做时,有人可以为我仔细检查一下吗?只是为了确保它看起来是正确的。
翻译矩阵(再次,让我们使用身份)是这样的:
[1, 0, X translation element]
[0, 1, Y translation element]
[0, 0, 1]