【发布时间】:2013-05-21 06:38:35
【问题描述】:
好的,首先,我知道网络上到处都是类似的问题,我查看的内容比我想数的要多,我已经尝试弄清楚了将近 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]
【问题讨论】:
标签: c++ matrix rotation translation cartesian