Advertisement

解决Python中的四元数相乘

阅读量:

一、四元数乘法

定义:

q = a + \vec u = a + bi + cj + dk

p = t+\vec v = t + xi + yj + zk

运算法则

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

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
    
    

全部评论 (0)

还没有任何评论哟~