实现模型的移动功能,我首先想的是通过键盘输入要移动的XYZ值,然后我就用C++中的cin语句输入三个整型变量,在simpleTest.c的基础上加了如下代码:
图1 头文件声明中添加的代码
图2 变量声明中添加的代码
图3 在main函数中添加的代码
图4 在draw()函数中添加的代码
在VS2010中编译后,出现了很多错误,而且都是cmath.h中的错误,如图5所示,但是我的代码中并没有用到cmath,我在网上搜了一下这个错误,看到有的网友说:“遇到这个问题了,其实不是代码有问题,是源代码文件有问题,把后缀改一下就能编译成功,即把*.c改为*.cpp。”我将simpleTest.c改成simpleTest.cpp之后再打开simpleTest.sln文件,显示找不到simpleTest.cpp这个文件。
图5 编译出现的错误
然后用scanf语句输入pointX、pointY、pointZ,编译运行时,显示的画面卡主了,而且无法输入,不知道是什么原因。
后来我又想通过键盘响应函数void keyEvent( unsigned char key, int x, int y);来实现,但是该方法只能选择0--9这10个数输入,移动的距离很小,运行结果如图6所示(key==9,沿X轴移动)。
图6 键盘响应的运行结果
最后我直接在代码中加入移动的距离,代码和运行结果如下图所示(为了明显看到移动的效果,我仅移动了X的坐标,如果想同时移动XYZ的坐标,可直接在glTranslatef()函数中改动),将显示的模型移动就完成了。
图7 移动的代码 图8 移动的运行结果