给定两个正交的单位向量A和B以及两个不同的正交单位向量C和D,我需要3×3方向余弦矩阵或一个将旋转A来对齐C的C的四元数,与D对齐。3D旋转算法需要
这些向量都是3向量(x,y,z)。
我有一个蛮力算法,但我几乎肯定有一个更简单的解决方案。而我的网页搜索还没有透露。我使用C#,但如果你有东西在C,或FORTRAN,或基本(等),我可以将其转换。或者,我可以使用数学上写出的术语。
应用程序正在确定航天器所需的方位,以便与其刚性连接的光学设备将正确对齐以拍摄照片。 (必须获得光学瞄准镜的瞄准方向和光学装置相对于瞄准瞄准镜的适当旋转,因此需要一次校准两个矢量)。该计算可以用于由实时感测数据馈送的环路中,并且蛮力解决方案太慢了。
下面是测试溶液: 如果A和B将被旋转到 d和E正交单位矢量其也是正交单位矢量 (注意在从原来的问题变量名的改变。) 然后计算交叉乘积:C = BXA和F = EXD 然后所需的旋转矩阵为:Dx * Ax + Ex * Bx + Fx * Cx,Dx * Ay + Ex * By + Fx * Cy,Dx * Az + Ex * Bz + Fx * Cz, Dy * Ax + Ey * Bx + Fy * Cx,Dy * Ay + Ey * By + Fy * Cy,Dy * Az + Ey * Bz + Fy * Cz, Dz * Ax + Ez * Bx + Fz * Cx,Dz * Ay + Ez * By + Fz * Cy,Dz * Az + Ez * Bz + Fz * Cz 非常简单,计算速度快,没有奇点。 – 2010-08-31 15:54:13