OpenGL中的问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 17:02:38
有一段代码:
draw_wheel_and_bolts()
{
int i;
draw_wheel();
for(i=0;i<5;i++)
{
glPushMatrix();
glRotatef(72.0*i,0.0,0.0,1.0);
glTranslatef(3.0,0.0,0.0);
draw_bolt(0;
glPopMatrix();
}
}
说的是绘制轮子和螺钉,解释是假定轮子与螺钉的轴都与Z轴对齐,
固定每个轮子的5个螺钉均匀的分布,每隔72度一颗,并且与轮子
中心的距离都为3个单位。
我对于这个旋转和平移有点搞不懂了,不知道应该谁先执行?如果
是依次来的话,我想请高手来帮我指点一下.这段代码是怎么执行出的?
最好详细点,谢谢!
没有人进行回答了吗,希望还是有高手来解释解释,因为我感觉我太差了,好多不懂的,或者谁告诉我看哪些东西能快点

在这之前你要明白
glPushMatrix()和glPopMatrix()的作用,前者是保存当前的矩阵(压栈),后面是恢复矩阵(出栈)

进行矩阵变换前,先保存当前的矩阵,然后调用glRotatef执行旋转操作(其实只是修改变换矩阵而已),然后进行平移,接下来才绘制物体;最后就恢复之前保存的矩阵;你要清楚矩阵的变换会一直影响后面的物品的绘制的,也就是说变换会有叠加的!!所以才需要恢复到之前未变换前的矩阵
==================
学习是没有捷径的

考虑 局部坐标系 就是顺着来, 考虑 全局坐标系就是反着来,

你可以这样考虑, 每次将局部坐标系 旋转需要的角度, 然后平移, 就到了需要的 位置了