OpenGL ES平移矩陣和旋轉矩陣的左乘與右乘效果
阿新 • • 發佈:2017-08-06
角度 style 位置 作用 span 坐標系 rotate 不同的 世界
OpenGL ES平移矩陣和旋轉矩陣的左乘與右乘
在OpenGL 、OpenGL ES中矩陣起著舉足輕重的作用,而矩陣之間的左乘與右乘在效果上是不同的。
一、先平移後旋轉
場景效果:人繞樹旋轉。
原理:以樹為參考點,首先將人平移到樹坐標系的指定位置(平移矩陣),然後旋轉一定角度(旋轉矩陣)。
公式:
pos = (matRotate * matTrans * vec4(pos,1.0)).xyz;
其中matRotate表示旋轉矩陣;
matTrans表示平移矩陣;
pos表示三維世界的坐標。
二、先旋轉後平移
場景效果:以太陽為參考點的地球自轉。
原理:以太陽為參考點,首先旋轉地球(旋轉矩陣),然後將地球平移到太陽坐標系的指定位置(平移矩陣)。
公式:
pos = (matTrans * matRotate * vec4(pos,1.0)).xyz;
其中matRotate表示旋轉矩陣;
matTrans表示平移矩陣;
pos表示三維世界的坐標。
註意事項:
OpenGL|ES是基於右手坐標系運算的,因此在上述公式中,矩陣是從右向左起作用的,也就是距離vec4的pos越近,越先起作用。
OpenGL ES平移矩陣和旋轉矩陣的左乘與右乘效果