用到三个子函数: glTranslate*(x, y, z) 、 glRotate*(x, y, z) 、 glScale*(x, y, z) 。每个函数都会产生一个矩阵,并右乘当前矩阵。...考虑一个物体绕任意的轴(而不是三个坐标轴)旋转,如:绕着过顶点(x, y, z)的方向为(a, b, c)的轴,旋转角度θ。...这时可用多个变换的叠加构建矩阵: 首先将顶点(x, y, z)平移到原点,绕X轴旋转角度p使指定的旋转轴在x-z平面上,绕Y轴旋转角度q使指定的旋转轴与Z轴重合,绕指定旋转轴(也就是z轴)旋转角度θ,绕...Y轴旋转角度-q,绕X轴旋转角度-p,将顶点平移到向量(x,y,z)。...比如:
来看个具体的例子:一个绕z轴匀速螺旋匀速上升的立方体,在某一帧中(即在这一帧对应的时刻t下),其向z轴正方向平移的长度和绕z轴旋转的角度分别为:
则模型矩阵(注意上文齐次坐标下的基本变换矩阵)为