wordpress 怎么删除主题,网站推广seo教程,app与网站的区别是什么,长春网站建设方案咨询为什么80%的码农都做不了架构师#xff1f; 在討論「四元數」之前#xff0c;我們來想想對三維直角座標而言#xff0c;在物體旋轉會有何影響#xff0c;可以擴充三維直角座標系統的旋轉為三角度系統#xff08;Three-angle system#xff09;#xff0c… 为什么80%的码农都做不了架构师 在討論「四元數」之前我們來想想對三維直角座標而言在物體旋轉會有何影響可以擴充三維直角座標系統的旋轉為三角度系統Three-angle system在Game Programming Gems中有提供這麼一段 Quaternions do not suffer from gimbal lock. With a three-angle(roll, pitch, yaw) system, there are always certain orientations in which there is no simple change to the trhee values to represent a simple local roation. You often see this rotation having pitched up 90 degree when you are trying to specify a local yaw for right. 簡單的說三角度系統無法表現任意軸的旋轉只要一開始旋轉物體本身即失去對任意軸的自主性。 四元數Quaternions為數學家Hamilton於1843年所創造的您可能學過的是複數例如a b i 這樣的數其中i * i -1Hamilton創造了三維的複數其形式為 w x i y j z k其中i、j、k的關係如下 i2 j2 k2 -1 i * j k -j * i j * k i -k * j k * i j -i * k 假設有兩個四元數 q1 w1 x1 i y1 j z1 k q2 w2 x2 i y2 j z2 k 四元數的加法定義如下 q1 q2 (w1w2) (x1x2) i (y1y2) j (z1z2) k 四元數的乘法定義如下利用簡單的分配律就是了 q1 * q2 (w1*w2 - x1*x2 - y1*y2 - z1*z2) (w1*x2 x1*w2 y1*z2 - z1*y2) i (w1*y2 - x1*z2 y1*w2 z1*x2) j (w1*z2 x1*y2 - y1*x2 z1*w2) k 由於q w x i y j z k中可以分為純量w與向量x i y j z k所以為了方便表示將q表示為(S, V)其中S表示純量wV表示向量x i y j z k所以四元數乘法又可以表示為 q1 * q2 (S1 V1)*(S2 V2) S1*S2 - V1.V2 V1XV2 S1*V2 S2*V1 其中V1.V2表示向量內積V1XV2表示向量外積。 定義四元數q w x i y j k 的norm為 N(q) |q| x2 y2 z2 w2 滿足N(q) 1的四元數集合稱之為單位四元數Unit quaternions。 定義四元數定義四元數q w x i y j k的共軛Conjugate為 q* 定義四元數q w - x i - y j - k [S - V] 定義四元數的倒數為 1/ q q* / N(q) 說明了一些數學您所關心的或許是四元數與旋轉究竟有何關係假設有一任意旋轉軸的向量A(Xa, Ya, Za)與一旋轉角度θ如下圖所示 可以將之轉換為四元數 x s * Xa y s * Xb z s * Xc w cos(θ/2) s sin(θ/2) 所以使用四元數來表示的好處是我們可以簡單的取出旋轉軸與旋轉角度。 那麼四元數如何表示三維空間的任意軸旋轉假設有一向量P(X, Y, Z)對著一單位四元數q作旋轉則將P視為無純量的四元數X i Y j Z k則向量的旋轉經導證如下 Rot(P) q p q* 四元數具有純量與向量為了計算方便將之以矩陣的方式來表現四元數的乘法假設將四元數表示如下 q [w, x, y, z] [S, V] 兩個四元數相乘q q * q的矩陣表示法如下所示 若令q [S, V] [cosθ, u*sinθ]其中u為單位向量而令q [S, V]為一四元數則經過導證可以得出q * q * q^(-1)會使得q繞著u軸旋轉2θ。 由四元數的矩陣乘法與四元數的旋轉可以導證出上面的旋轉公式可以使用以下的矩陣乘法來達成 講了這麼多其實就是要引出上面這個矩陣乘法也就是說如果您要讓向量(x, y, z)w為0對某個單位向量軸u(x, y, z)旋轉角度2θ則w cosθ代入以上的矩陣乘法即可得旋轉後的(x, y, z)如果為了方便轉換矩陣的最下列與最右行會省略不寫出來而如下所示 關於四元數的其它說明您可以參考 向量外積與四元數 這篇文章。 關於旋轉的轉換矩陣導證在Game Programming Gems第二章有詳細的說明。 關於 Gimbal lock。 转载于:https://my.oschina.net/lyr/blog/61877