【數學問題2】python實現四元數相乘

一、四元數乘法

定義:

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

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

運算法則

pq=atuv+av+tuu×vpq = at - \vec u \cdot \vec v + a\vec v +t\vec u \vec u \times \vec v

pq=(atbxcydz)+(ax+bt+czdy)i+(aybz+ct+dx)j+(az+dtcx+by)kpq= (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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章