1、矩陣具有坐標變換的作用,例如:左乘一個旋轉矩陣,實現點的坐標旋轉,左乘一個平移矩陣實現,點的平移
2、一個點可以同時串聯相乘幾個變換矩陣,實現坐標連續變換,根據左乘規則,右邊矩陣先作用於點,作用順序從右往左,例如:C*B*A*point(注:C,B,A分別為變換矩陣,point為一個vector3的位置向量,即點的x,y,z坐標)運算式子,矩陣A先作用於point,其次是B,C
3、QMatrix4x4矩陣類本身就支持translate,rotate,projection等連續變換函數,那么問題來了,qs這些變換的作用順序是怎么樣的,實際上和上面說的矩陣作用規則是一樣的。
順序是按照后變換,先作用的,具體如下,
? ? matrix.perspective(45,w/h,0.1,100);? ? ?// 透視矩陣變換
? ? matrix.translate(0.8,0,-5);? ? // 平移變換
? ? matrix.rotate(30,0,1,0)? ? // 繞着y軸旋轉30度
? ? ? matrix*point;? ? ?// 注:此時這給點是先執行了旋轉,再平移,最后透視處理。
? ? ?//?而不是從上往下順序,先透視,再平移和旋轉
上面代碼作用等同於如下代碼:
? ? matrix1.perspective(45,w/h,0.1,100);? ? ?// 用一個單獨矩陣,透視矩陣變換
? ? ? ? matrix2.translate(0.8,0,-5);? ? // 用另一個單獨矩陣,平移變換
? ? matrix3.rotate(30,0,1,0)? ? ? ? ? ? ? ? ? ? ? ? ?// 再用一個單獨矩陣,繞着y軸旋轉30度