openGL坐标变换
坐标变换:OPENGL的每一种变换都是一个矩阵的运算。假设当前某顶点坐标为C,现在要做某种变换(设矩阵为M)得到新的坐标C1,那么运算过程就是C1=T×C。OpenGL应用左乘规则,坐标的变换就是用变换矩阵乘以坐标向量
OpenGL变换在编程的时候顺序是反过来的。想对目标 glutWireSphere(0.2, 10, 8);//draw earth 做R2,T,R1的变换,在写的时候就要:
glRotatef(year, 0.0, 1.0,0.0);//旋转矩阵R1
glTranslatef(2.0, 0.0, 0.0);//平移矩阵T
glRotatef(day, 0.0, 1.0, 0.0);//旋转矩阵R2
glutWireSphere(0.2, 10, 8);//draw earth
三维观察原理类似于拍一张照片的过程。(类似于red book )
屏幕坐标点 = 3D 模型点 * 几何变换栈矩阵(n...1) * 投影变换栈矩阵(n...1)
OpenGL 维护两个栈: 投影变换栈, 几何变换栈。
投影:glOrtho,gluPerspective--------------------glMatrixMOde(GL_PROJECTION);
几何变换:glTranslatef,glRotatef,glScalef--------glMatrixMOde(GL_MODELVIEW);
1万+




被折叠的 条评论
为什么被折叠?



