代码之家  ›  专栏  ›  技术社区  ›  Abhilash Muthuraj

旋转,通过头文件在OpenGL中转换?

  •  0
  • Abhilash Muthuraj  · 技术社区  · 15 年前

    我有一个名为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 回复  |  直到 6 年前
        1
  •  1
  •   Alex Peck    15 年前

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

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

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