龙书的例程代码中真有许多值得我研究的地方。今天学习光照,自己动手写了一下那个有4个集合体的例子,我一开始用的是自动旋转的代码,突然想看看龙书的代码是怎么做的,于是看到了如下一段:
这一段通过键盘的上、下、左和右方向键控制摄像机的位置。首先定义了两个静态变量angle和height分别用来计算摄像机的位置。具体的位置计算公式是:D3DXVECTOR3 position(cosf(angle) * 7.0f, height, sinf(angle) * 7.0f);
也就是说,摄像机在xz平面上处在一个半径为7的圆上,x坐标为cos(angle),z坐标为sin(angle),而y坐标就是我们的高度,而高度控制则是通过上面的代码进行的,为了使运动平滑起来,我们使用了timeDelta作为移动的参数。
上述这段代码实现的移动效果非常好,摄像机始终定位在原点,看起来非常舒服!