实现模型的移动功能,我首先想的是通过键盘输入要移动的XYZ值,然后我就用C++中的cin语句输入三个整型变量,在simpleTest.c的基础上加了如下代码:

Artoolkit例子中的simpletest.c改写-----将显示的模型移动

1       头文件声明中添加的代码

Artoolkit例子中的simpletest.c改写-----将显示的模型移动

图2     变量声明中添加的代码

Artoolkit例子中的simpletest.c改写-----将显示的模型移动

图3    在main函数中添加的代码

Artoolkit例子中的simpletest.c改写-----将显示的模型移动

图4      在draw()函数中添加的代码

在VS2010中编译后,出现了很多错误,而且都是cmath.h中的错误,如图5所示,但是我的代码中并没有用到cmath,我在网上搜了一下这个错误,看到有的网友说:“遇到这个问题了,其实不是代码有问题,是源代码文件有问题,把后缀改一下就能编译成功,即把*.c改为*.cpp。”我将simpleTest.c改成simpleTest.cpp之后再打开simpleTest.sln文件,显示找不到simpleTest.cpp这个文件。

Artoolkit例子中的simpletest.c改写-----将显示的模型移动

图5     编译出现的错误

然后用scanf语句输入pointX、pointY、pointZ,编译运行时,显示的画面卡主了,而且无法输入,不知道是什么原因。

后来我又想通过键盘响应函数void   keyEvent( unsigned char key, int x, int y);来实现,但是该方法只能选择0--9这10个数输入,移动的距离很小,运行结果如图6所示(key==9,沿X轴移动)。

Artoolkit例子中的simpletest.c改写-----将显示的模型移动

图6     键盘响应的运行结果

最后我直接在代码中加入移动的距离,代码和运行结果如下图所示(为了明显看到移动的效果,我仅移动了X的坐标,如果想同时移动XYZ的坐标,可直接在glTranslatef()函数中改动),将显示的模型移动就完成了。

Artoolkit例子中的simpletest.c改写-----将显示的模型移动                   Artoolkit例子中的simpletest.c改写-----将显示的模型移动              

                             图7   移动的代码                                                                                                      图8  移动的运行结果                



相关文章:

  • 2021-12-19
  • 2021-12-24
  • 2022-12-23
  • 2022-12-23
  • 2022-02-12
  • 2021-08-05
猜你喜欢
  • 2021-12-21
  • 2021-06-08
  • 2022-12-23
  • 2022-02-22
  • 2021-08-14
  • 2022-12-23
  • 2022-02-10
相关资源
相似解决方案