1. 程式人生 > >OpenGL ES平移矩陣和旋轉矩陣的左乘與右乘效果

OpenGL ES平移矩陣和旋轉矩陣的左乘與右乘效果

角度 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平移矩陣和旋轉矩陣的左乘與右乘效果