旋转,在opengl中通过头文件翻译?

时间:2010-02-15 16:19:08

标签: c++ visual-studio opengl translation rotation

我有一个名为base.h的头文件,它有所有初始显示和类似的东西, 我的主要目标是模拟具有自由度的机器人。

class center_rods
{
    public:
        center_rods()
        {

        }

         void draw_center_rod()
         {
                glPushMatrix();
                        glTranslatef(0,1,0);
                        glRotatef(90.0,1.0,0.0,0.0);  
                        glScalef(0.3,5,0.3);
                        glColor3f(0,0,1);
                        glutSolidCube(1.0);
                glPopMatrix();
         }

/*  design and implementation of clamp holder of center rod, needs to be done   */

};


class base_of_robot: public base1 
{
    public:
        base_of_robot()
        {

        }

在名为robo.cpp的主程序中,我想实现这些目标,

  • 我可以将主程序中的参数传递给头文件吗?因为我使用了glutkeyBoardFunc(),所以我需要我的机器人手臂根据键进行平移和旋转,如下所示:
case 'a':
            to_arm = 0, fro_arm = 0;
            glutTimerFunc(100, myTimerFunc, 3);
            break;
  • 如何将参数传递给头文件,因为所有重新显示都是从头文件控制的。

1 个答案:

答案 0 :(得分:1)

你应该放置一些状态来表示其中一个类(可能是机器人)内的转换。您可以将方向表示为欧拉角,矩阵或四元数,但欧拉角可能是最简单的开始。

然后,glutkeyBoardFunc函数应该通过在封闭类上定义的成员函数来修改此状态,例如RotateX(float amountInRadians)。您的绘图函数应该基于类中的状态。这样,您将数据传递到头文件中定义的类的实例。

退一步后,您应该搜索有关使用过剩的基本教程,该教程将向您展示如何构建您的程序(例如http://nehe.gamedev.net/)。其中许多是用C语言编写的(或者主要是程序性的),因此它们通常不会说明您所暗示的面向对象设计。