我建议初学者的一个好方法是先考虑点而不是3D对象.然后,可以将所有变换视为将点位置改变为新位置的函数.
首先想象一个XYZ笛卡尔坐标空间,然后想象一个空间中的点(X,Y,Z)与原点(0,0,0).所有OpenGL在这个阶段都知道点X,Y,Z.现在你准备开始了:
旋转需要角度和旋转中心.glRotate允许您仅指定角度.借助于数学,从概念上讲,旋转中心位于(XX,YY,ZZ)或(0,0,0)位置.
翻译只是偏离目前的位置.由于OpenGL知道你的点(X,Y,Z),它只是将offest添加到位置向量.因此,更恰当的说它是相对于当前位置而不是先前的翻译.
缩放是点向量(Xm,Ym,Zm)的乘法,因此它只是将该点转换为m倍.因此,概念上可以说它不会改变坐标轴的大小.
然而,当你开始觉得在3D事情变得升技棘手,因为你会发现,如果你不小心,在一个单一的3D对象的点通常不会更改的方式位置,你的愿望彼此相对.例如,您将学习如果要围绕对象的中心旋转,则必须"将其移动到原点,旋转,然后再将其移回".将它向后移动的过程可以被认为是指定旋转中心.这些实际上是您应用的数学"技巧".