作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个四元数,例如:
w x y z
1: 0.98 0.08 0.17 -0.01
2: 0.70 0.70 0.0 0.0
我需要将它们相乘,得到第三个,其中包含所有旋转,但没有任何想法。如果 PHP/C++/PAWN 中有一个函数可以完成这样的事情,那就完美了。
我搜索了很多,但几乎没有找到让我理解的内容。
感谢您的回答。
最佳答案
您应该选择一种语言。在 C++ 中,Boost.Math 库包括 quaternions ;我不知道你提到的其他语言。或者对于简单的乘法,您可以使用乘法表(我从 Wikipedia 复制):
*| 1 i j k
-------------
1| 1 i j k
i| i -1 k -j
j| j -k -1 i
k| k j -i -1
例如,i*j
给出i
行和j
列的值,即k
.
因此,假设您的四元数表示 w*1 + x*i + y*j + z*k
,乘法将类似于
quaternion operator*(quaternion a, quaternion b) {
return {
a.w * b.w - a.x * b.x - a.y * b.y - a.z * b.z, // 1
a.w * b.x + a.x * b.w + a.y * b.z - a.z * b.y, // i
a.w * b.y - a.x * b.z + a.y * b.w + a.z * b.x, // j
a.w * b.z + a.x * b.y - a.y * b.x + a.z * b.w // k
};
}
(注意:未经测试,并且可能充满拼写错误)。
关于php - 如何将两个四元数相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19956555/
我是一名优秀的程序员,十分优秀!