math - 如何将四元数与向量相乘?

标签 math vector quaternions cesiumjs

我正在使用 CesiumJs

我有一个四元数 (x,y,z,w) 我有一个矢量 (x,y,z)

我想将该四元数乘以一个向量,基本上在我有一个旋转的那一刻,我想将该旋转与一个向量前向 (0,0,1) 相乘以获得一个方向上的点,但是CesiumJS目前没有这些功能。

我知道有一些方法可以将 Vector 与 Quaternion 相乘,我是在 Unity 中做的,但我不知 Prop 体怎么做

我找到了这个公式 v' = q * v * (q^-1) 但是 (q^-1) 到底是什么?

最佳答案

您可以“向量化”四元数积,即根据向量运算(例如点积和叉积)来编写它。这样做你会得到一个等价于欧拉-罗德里格斯公式 [1] 的公式:

v' = v + 2 * r x (s * v + r x v)/m

其中x表示叉积,s和r分别是四元数的标量和向量部分,m是四元数分量的平方和。

[1] https://en.m.wikipedia.org/wiki/Euler%E2%80%93Rodrigues_formula

关于math - 如何将四元数与向量相乘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58071118/

相关文章:

java - DIT FFT Radix-2 算法故障排除

c++ - 在模板类中折叠指针?

c++ - 使用Vector函数C++从文件中读取特定数据

swift - 使用 scenekit 和 swift - Boids 实现将模型旋转到它在 3d 中行进的方向

node.js - 如何在Three.js中从欧拉得到原始旋转四元数

javascript - 如何旋转我生成的六边形点或生成它以使第一个点位于中心顶部?

python - Wolfram Alpha 和 scipy.integrate.quad 对同一个积分给出了不同的答案

variables - 在 Sass 中乘以百分比

c++ - 为什么这个 vector 声明无效?

c++ - 自定义 C++ 四元数旋转无法正常工作