https://zhuanlan.zhihu.com/p/45404840
q(w,x,y,z) => matrix3x3
m00 = 1.0 - 2.0 * (yy + zz), m01 = 2.0 * (xy - zw), m02 = 2.0 * (xz + yw),
m10 = 2.0 * (xy + zw), m11 = 1.0 - 2.0 * (xx + zz), m12 = 2.0 * (yz - xw),
m20 = 2.0 * (xz - yw), m21 = 2.0 * (yz + xw), m22 = 1.0 - 2.0 * (xx + yy),
matrix3x3 => q(w,x,y,z)
2w = sqrt(m00 + m11 + m22 + 1)
4w = 2w*2
x = (m21 - m12) / 4w
y = (m02 - m20) / 4w
z = (m10 - m01) / 4w