вращение, перевод в opengl через заголовочный файл? - PullRequest
0 голосов
/ 15 февраля 2010

У меня есть заголовочный файл с именем 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 Ответ

1 голос
/ 15 февраля 2010

Вы должны поместить некоторое состояние для представления преобразований внутри одного из классов (возможно, робота). Вы можете представить ориентацию в виде углов Эйлера, матрицы или кватерниона, но, возможно, проще всего начать с углов Эйлера.

Функция glutkeyBoardFunc должна затем изменить это состояние с помощью функций-членов, определенных в классе включения, например, RotateX (float amountInRadians). Ваши функции рисования должны основываться на состоянии в классах. Таким образом, вы передаете данные в экземпляр класса, определенного в заголовочном файле.

Сделав шаг назад, вы должны найти базовый учебник по использованию перенасыщения, который покажет вам, как вы можете структурировать свою программу (например, http://nehe.gamedev.net/). Многие из них написаны на C (или в основном процедурные) поэтому они часто не иллюстрируют объектно-ориентированный дизайн, на который вы намекали.

...