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

标签 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(),所以我需要我的机器人 ARM 根据键进行平移和旋转,如下所示:
case 'a':
            to_arm = 0, fro_arm = 0;
            glutTimerFunc(100, myTimerFunc, 3);
            break;
  • 如何将参数传递给头文件,因为所有重新显示都由头文件控制。

最佳答案

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

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

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

关于c++ - 旋转,通过头文件在opengl中翻译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2267253/

相关文章:

c++ - 在 vs2010 上构建 opengl 项目后出现一些错误

c++ - 在没有 DOS、Windows、Linux 的情况下在引导中查找内存大小

c++ - 头文件中的变量未在范围内声明

c# - 如何在 Visual Studio 中从 C++/CLI 和 C# 调用 C++/CLI?

c++ - 将 VAO+IBO 与 GLSL 着色器结合使用

objective-c - 使用 Cocoa 的简单 OpenGL 示例

c++ - 奇怪的是重复出现的模板模式。没有匹配的函数用于调用..模板参数/替换失败

c++ - 从不兼容的类型分配给 Double?

visual-studio - 保持代码格式始终正确?

c# - 在没有代码审查的情况下阻止将文件 checkin TFS