【数学问题2】python实现四元数相乘

一、四元数乘法

定义:

q = a + u = a + b i + c j + d k q = a + \vec u = a + bi + cj + dk

p = t + v = t + x i + y j + z k p = t+\vec v = t + xi + yj + zk

运算法则

p q = a t u v + a v + t u u × v pq = at - \vec u \cdot \vec v + a\vec v +t\vec u \vec u \times \vec v

p q = ( a t b x c y d z ) + ( a x + b t + c z d y ) i + ( a y b z + c t + d x ) j + ( a z + d t c x + b y ) k pq= (at -bx -cy -dz) + (ax+bt+cz-dy)i + (ay-bz+ct+dx)j+ (az+dt-cx+by)k

代码

# Take the product of two quaternions
def quatProduct(q1, q2):
    r1 = q1[0]
    r2 = q2[0]
    v1 = np.array([q1[1], q1[2], q1[3]])
    v2 = np.array([q2[1], q2[2], q2[3]])

    r = r1 * r2 - np.dot(v1, v2)
    v = r1 * v2 + r2 * v1 + np.cross(v1, v2)
    q = np.array([r, v[0], v[1], v[2]])

    return q
发布了75 篇原创文章 · 获赞 722 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/weixin_41045354/article/details/105589251