以下是个人的理解,如果有错误或者不当的地方请大家指正
OpenGL坐标变换可以按照两种方式来理解(设计 坐标变换时的考虑方法,不是阅读代码的方法)
OpenGL坐标变换可以按照两种方式来理解(设计 坐标变换时的考虑方法,不是阅读代码的方法)
1.
全局固定坐标系,此时坐标的变换顺序与代码出现顺序相反,
普通的(多个模型之间不需要相互定位的情况)应用场景下便于实现坐标变换目的,代码理解不方便(因为代码中的最后一个变换最先作用到模型坐标上)
2.
局部移动坐标系,此时坐标的变换顺序与代码出现顺序相同,这种方式方便理解代码,而且在机器人定位中容易理解肩、肘、腕、手指的相对位置(
多个模型之间需要相互定位的情况 ),
不论按照哪种理解方式来设计,坐标的数学公式是一定的,即 C * M * vertex,也就是阅读代码的方法是一样的,每一个变换函数的调用都是在当前矩阵 C 的坐标系下的变换(包括已经改变方向的坐标轴),此时如果调用
glGetDoublev(
GL_MODELVIEW_MATRIX
, matrix);
得到的 matrix 的数值是在全局固定坐标系下的坐标值。