php - 如何将两个四元数相乘

标签 php c++ function 3d quaternions

我有两个四元数,例如:

    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/

相关文章:

php - 在 MySQL 中搜索单个字符串

php - Laravel 更新并选择

c++ - 尝试根据 move 赋值编写 move 构造函数

c++ - 函数声明错误 - 返回一个指针数组

image - 用于图像数据的 Matlab hist 函数

function - Access 中的自定义函数返回类型转换错误

php - 将 php 输出导出为 excel

数字类型之间的 C++ 转换

c++ - 提升 asio 写/读 vector

javascript - Laravel 表单抛出方法异常错误(到处检查帖子)