Vector 使用由三维矢量构成的任意坐标系在三维世界中旋转

Vector 使用由三维矢量构成的任意坐标系在三维世界中旋转,vector,3d,rotation,Vector,3d,Rotation,我有一个3D世界,还有三个点。这些点通过向量连接,选择“三角形”的一侧作为X轴。其他两个轴由(v1.y,-v1.x,0)计算,第三个轴为v1 x v2(叉积) 我有一个偏移向量U(u1,u2,u3),它在交替坐标系(由向量组成的坐标系)的X,Y,Z轴上移动一个对象 我想在这个任意坐标系中旋转游戏中的对象(x、y、z轴)。例如,(90,0,0)将在该备用系统中的X轴上旋转90度,而不是在世界上 我也不想使用四元数,因为我没有使用Unity引擎。四元数不难实现,而且大多数(如果不是所有的话)线性代数

我有一个3D世界,还有三个点。这些点通过向量连接,选择“三角形”的一侧作为X轴。其他两个轴由(v1.y,-v1.x,0)计算,第三个轴为v1 x v2(叉积)

我有一个偏移向量U(u1,u2,u3),它在交替坐标系(由向量组成的坐标系)的X,Y,Z轴上移动一个对象

我想在这个任意坐标系中旋转游戏中的对象(x、y、z轴)。例如,(90,0,0)将在该备用系统中的X轴上旋转90度,而不是在世界上


我也不想使用四元数,因为我没有使用Unity引擎。

四元数不难实现,而且大多数(如果不是所有的话)线性代数/游戏数学库都实现了它们,所以不使用Unity并不是一个很好的借口。也就是说,这也可以很容易地用矩阵来完成。交替系统的三个轴构成从世界基准到新基准的旋转矩阵列;将其与世界基准中的X旋转矩阵相乘。那么我应该在这个矩阵中包含什么呢?因为旋转矩阵只针对一条“线”或向量,而不是三条。请再次阅读我的评论-我提到了两个矩阵,I)围绕X轴旋转,ii)其中一个矩阵的列由交替轴给出。最后的矩阵由
ii)*i)
给出。我又读了一遍。现在还不清楚的只是i)矩阵(绕X轴旋转)。我知道我应该得到我)*ii)但我不知道我应该从中得到什么。-参见X矩阵。你需要的矩阵是
ii)*i)
不是
i)*ii)
-矩阵乘法是非交换的。