Qt中QOpengl的QMatrix4x4矩陣作用原理以及使用方法


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度

? ? matrix1*matrix2*matrix3*point;? ? ?//?先執行了旋轉,再平移,最后透視處理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM