在unity3d中, quaternion 的乘法操作 (operator * ) 有兩種操作: (1) quaternion * quaternion , 例如 q = t * p; 這是將一個點(diǎn)先進(jìn)行t 操作旋轉(zhuǎn),然后進(jìn)行p操作旋轉(zhuǎn). (2) Quaternion * Vector3, 例如 p : Vector3, t : Quaternion , q : Quaternion; q = t * p; 這是將點(diǎn)p 進(jìn)性t 操作旋轉(zhuǎn); 我進(jìn)行的是第2種操作,即對一個向量進(jìn)行旋轉(zhuǎn); 首先 ,Quaternion 的基本數(shù)學(xué)方程為 : Q = cos (a/2) + i (x * sin(a/2)) + j (y * sin(a/2)) + k(z * sin(a/2)) (a 為旋轉(zhuǎn)角度) Q.w = cos (angle / 2) Q.x = axis.x * sin (angle / 2) Q.y = axis.y * sin (angle / 2) Q.z = axis.z * sin (angle / 2) 我們只要有角度就可以給出四元數(shù)的四個部分值,例如我想要讓點(diǎn)M=Vector3(o,p,q) 繞x軸順時針旋轉(zhuǎn)90度;那么對應(yīng)的quaternion數(shù)值就應(yīng)該為: Q : Quaternion; Q.x = 1 * sin(90度/2) = sin(45度) = 0.7071 Q.y = 0; Q.z = 0; Q.w = cos(90度/2) = cos (45度) = 0.7071 Q = (0.7071, 0 , 0 , 0.7071); m = Q * m; (將點(diǎn)m 繞 x軸(1,0,0) 順時針旋轉(zhuǎn)了90度) |
|