我有2个任意坐标系的6个单位矢量(代表X / Y / Z轴)。第二坐标系的矢量值基于第一系统。我需要将一个系统旋转到另一个系统并返回匹配的四元数。在c ++中这样做最合理的方法是什么?
SO上有很多关于将y-up / z-up / left- / right-handed系统相互转换的帖子,遗憾的是我需要将它作为任何6个单位向量的通用解决方案。感谢您的任何见解。
答案 0 :(得分:2)
3个正交矢量可能是旋转矩阵3x3。您可以构建2个矩阵并找到相对旋转为r_relative = r1.transpose()* r2;
使用任何测试的lib将矩阵转换为四元数。
或将两个旋转转换为四元数和
q_relative = q1.inverted()* q2;