昨天在学习第九课的同时也把第十课完成了。不过,学习第十课没有第九课轻松了,它的注释有的地方省略了(因为不是同一个人写的,本文作者的风格是就问题针对性地给出注释,而不关心一些细节如为什么要这样做),所以对于一些变量的实际作用感受不深。
这一课是写一个三维引擎的东西。不仅能看到一个物体,而且可以在其中移动来看其中的内部(通过改变物体的世界 坐标系而不是改变视点的位置),文中给出了几个数据结构,从开始基本的vertex到trangle再到sector。vertex表示顶点结构,trandgle表示三角形结构(事实上,现今大多数人都是用无数这样的三角形来近似/逼近一个曲面),然后sector表示一个由许多三角形构成的体的结构。文中,所有的与体相关的三角形都放在一个文件中,通过读写文件来对体进行操作。其实,这不是核心的,因为这都太好懂了,但是,这却是文中作者描述的重点。而对于其中的一些变量的义意却并不涉及。如下面的:
xpos -= (float)sin(heading*piover180) * 0.05f; 为什么能延x平面移动
zpos -= (float)cos(heading*piover180) * 0.05f; 为什么能延z平面移动
walkbias = (float)sin(walkbiasangle * piover180)/20.0f;为什么能使产生跳跃感
以及walkbiasangle变量的作用
它们都给予了我困惑。
其中,heading的这个变量的意义非常重要,它代表着移动的长度。因此能解释xpos和ypos的由来。