我试图通过从世界到新的旋转创建一个旋转矩阵来在3维空间中旋转矢量。我首先围绕Z轴旋转,然后使用右手符号旋转Y轴,最后旋转X轴。矢量的3D Z-Y-X旋转
我使用的矩阵可以在wikipedia上找到(http://en.wikipedia.org/wiki/Euler_angles)。它位于转换矩阵列表中略低于页面中间的位置。我正在使用ZYX之一:
我现在使用Z旋转+45度,Y旋转+45度并且没有X旋转来创建它。这使我下面的矩阵:
[ 0.5 -0.707 0.5 ]
[ 0.5 0.707 0.5 ]
[ -0.707 0.0 0.707 ]
现在我由以下矢量相乘:
[ 10 ]
[ 0 ]
[ 0 ]
如可以看到它的沿x轴的10个单位长的矢量。我期望旋转的结果在x,y和z字段(z为负)的旋转结果大约为6,因为这给出了大致长度为10的矢量。即,矢量首先精确地在世界x和y轴之间旋转(第一个z旋转),然后再从那里向下倾斜45度,结束于xy平面和负z轴之间(第二个y旋转)。在我看来,这意味着代表这个向量的三个同样长的单位向量。
然而,我的两个矩阵类和所有其他程序给我这个向量作为结果:
[ 5 ]
[ 5 ]
[ -7.07 ]
似乎正确的,因为它的长度为10的预期。所以问题是我错在哪里?我敢肯定,我在做一些愚蠢的错误思想的地方明显,因为它肯定不具备三个平行相等的长胳膊:对
好吧,这么说我想先旋转我的系统在x-y平面45度,然后在新旋转的系统中围绕y轴绘制一个圆(例如半径为10个单位)。我希望它分成359个同样长的部分(计算360点)。就我所知,使用这个矩阵,如果我让y-旋转角度以每个点1度增长,那么这些分段在圆的所有部分中的长度将不会相等。我将如何继续这样做?可以这么说,对我来说重要的财产是这个角度对计算点有利。 – DaedalusAlpha 2011-02-23 09:03:47