将方向向量转换为四元数旋转

Posted

技术标签:

【中文标题】将方向向量转换为四元数旋转【英文标题】:Converting a direction vector to a quaternion rotation 【发布时间】:2013-03-30 05:36:27 【问题描述】:

我可以找到很多关于将四元数转换为方向向量的问题,但没有一个相反的问题,这让我觉得我做错了什么,但请耐心等待。

我要做的只是使用箭头模型显示定向光的方向。

定向光的方向是单位向量,但模型是使用四元数旋转的。

那么..如何旋转这个模型以匹配光的方向?

或者我疯了,我真的做不到,因为灯光没有位置,但模型有?

【问题讨论】:

【参考方案1】:

方向向量不是定义的旋转,它仍然有无数种可能的解。请参阅没有关于如何围绕轴旋转的信息。第二,向量是可能的,因为向量和旋转(具有有意义的中心)以及实际上是完全定义的矩阵。

因为在您的情况下,旋转毫无意义,只需使用向上矢量作为参考(也就是说,除非您的光线自上而下发光,反之亦然,否则您需要另一个参考)。

因此,将方向向量 D 和上向量 U 的叉积作为侧向量 S,然后将 D 和 S 相交以获得新的 Un。然后使用 D, Un, S 作为行(或列,取决于您的计算规则的设置方式)作为矩阵。矩阵到四元数是众所周知的数学。

【讨论】:

euclideanspace.com/maths/geometry/rotations/conversions/… 将方向和上向量转换为矩阵的详细信息:***.com/questions/18558910/… 仅供参考,这是正确答案:***.com/a/1171995/126995 @soonts 是的,你可以这样做。它只需要解释一下为什么它是同一件事。您应该将其添加为答案。

以上是关于将方向向量转换为四元数旋转的主要内容,如果未能解决你的问题,请参考以下文章

如何将欧拉角转换为四元数并从四元数中得到相同的欧拉角?

unity 使用四元数旋转向量

将 IMU 角速度准确转换为四元数

Eigen:将 Matrix3d 旋转转换为四元数

如何理解glm中四元数与向量相乘函数的写法

将四元数旋转转换为旋转矩阵?