nehe第九课的一些感想

来源:互联网 发布:淘宝全屏海报怎么制作 编辑:程序博客网 时间:2024/06/03 19:22

第九课是一个关于三维物体移动的动画的绘制,作者在屏幕上绘制了50个星星,并且通过对参数的改变来实现星星运动的效果。所用到的新的函数没有。但是,却 达到了很好的效果。所以,可以这么说,绘制是一个技巧的东西,所要求的东西不多。关键是在灵活应用。

在这一章里,让我深思的一点是,在计算机中的坐标问题,这要求我们有个好的空间立体感。比如本文中,对于星星所在最终的位置,经过了几次转动和移动,如果对空间没有建立起来,就不太好理解这些操作。就如我,空间的概念不强,对于其中的 

  glRotatef(tilt,1.0f,0.0f,0.0f);     // Tilt The View (Using The Value In 'tilt')
  glRotatef(star[loop].angle,0.0f,1.0f,0.0f);  // Rotate To The Current Stars Angle
  glTranslatef(star[loop].dist,0.0f,0.0f);  // Move Forward On The X Plane
  glRotatef(-star[loop].angle,0.0f,1.0f,0.0f); // Cancel The Current Stars Angle
  glRotatef(-tilt,1.0f,0.0f,0.0f);    // Cancel The Screen Tilt

这五句就有些不太明白的地方。可能他的意思是,绕X轴转90度,再绕y轴转星星自己所在角度,然后在这个方向上前进到星星所应该在的最终位置。然后通过两次转动让星星(实际上是我们绘制的四边形)转到我们正对的面。其实,要快速建立这种空间立体的感觉,我的方法就是假想一个人(自己)处于空间中,而opengl要画的就是这个人的面部,开始时,人脸正对着屏幕(也就是与真实中的我们面对面)。然后,第一句要转动90度,也就想成我们这个时候躺下来,脸向上。第二句要求我们绕y转动一个角度。也就是让我们侧躺着一个角度,然后再在此时的x方向前进dist距离(使终我们应该记住人的高度这根轴是y轴,两侧是x轴,z轴就是人的正前方,所以要在x方向前进dist距离就是在侧着的时候向斜上前进,这样就到达了星星的最终位置)

原创粉丝点击