Braco Robotico em OpenGL

Publicado por Michael 25/12/2005

[ Hits: 14.903 ]

Download braco.c




Este programa mostra como é utilizado matrizes no meio da computação grafica. É tulizado linguagem C com funções em Opengl, ele foi compilado no Dev C++  mais roda perfeitamente no ambiente Linux, basta fazer as configurações certa
Boa Sorte

  



Esconder código-fonte

/*Programa usado para estudar matriz em meio 3D
  Desenvolvido por : Michael D. Borges
*/


//#include <glut.h>
#include <gl/glut.h>

//Declaração de variáveis
float ang0=0, ang1=0 , ang2=0 ,vy=-1, ty=1;

// Objecto Quadric (gluCilinder, gluDisk)
GLUquadricObj      *planet;

void Desenha(void)
{
     glClear(GL_COLOR_BUFFER_BIT);
     glColor3f(0.0,0.0,1.0);
     glBegin(GL_QUADS);
        glVertex2f(-12,-2);
        glVertex2f(-12,0);
        glVertex2f(12,0);
        glVertex2f(12,-2);
     glEnd();
     glPushMatrix();
         glRotatef(ang0, 0.0, 0.0, 1.0);
         glColor3f(1.0,1.0,0.0);
         gluDisk(planet, 0, 2, 16, 1);
         glBegin(GL_QUADS);
            glVertex2f(0,-0.5);
            glVertex2f(0,0.5);
            glVertex2f(6,0.5);
            glVertex2f(6,-0.5);
         glEnd();
         glPushMatrix();
             glTranslatef(6.0, 0.0, 0.0);
             glRotatef(ang1, 0.0, 0.0, 1.0);
             glColor3f(1.0,0.0,0.0);
             gluDisk(planet, 0, 0.8, 16, 1);
             glBegin(GL_QUADS);
                glVertex2f(0,-0.3);
                glVertex2f(0,0.3);
                glVertex2f(3,0.3);
                glVertex2f(3,-0.3);
             glEnd();
             glPushMatrix();
                 glTranslatef(3.0, 0.0, 0.0);
                 glRotatef(ang2, 0.0, 0.0, 1.0);
                 glColor3f(0.0,0.0,1.0);
                 glBegin(GL_QUADS);
                    glVertex2f(0,-0.3);
                    glVertex2f(0,0.3);
                    glVertex2f(2,0.3);
                    glVertex2f(2,-0.3);
                 glEnd();
                 gluDisk(planet, 0, 0.8, 10, 1);
                 glPushMatrix();
                     glTranslatef(1., 0.0, 0.0);
                     glColor3f(0.0,0.0,1.0);
                     glBegin(GL_QUADS);
                         glVertex2f(1,-1);
                         glVertex2f(1,1);
                         glVertex2f(1.5,1);
                         glVertex2f(1.5,-1);
                      glEnd();
                      glBegin(GL_QUADS);
                         glVertex2f(1.5,ty-0.5);
                         glVertex2f(1.5,ty);
                         glVertex2f(3,ty);
                         glVertex2f(3,ty-0.5);
                      glEnd();
                      glBegin(GL_QUADS);
                         glVertex2f(1.5,vy);
                         glVertex2f(1.5,vy+0.5);
                         glVertex2f(3,vy+0.5);
                         glVertex2f(3,vy);
                      glEnd();

                 glPopMatrix();
             glPopMatrix();
         glPopMatrix();
     glPopMatrix();
     glFlush();
}

void TeclasEspeciais(int key, int x, int y)
{
    switch (key)
    {
      case GLUT_KEY_DOWN:
          if (vy>=-0.9 & vy<=-0.4) vy=vy-0.1;
          if (ty>=0.4 & ty<=0.9)ty=ty+0.1;
      break;

      case GLUT_KEY_UP:
          if (vy>=-1.1 & vy<=-0.5) vy=vy+0.1;
          if (ty>=0.5 & ty<=1.1)ty=ty-0.1;
      break;

      case GLUT_KEY_HOME:
          ang0=ang0+5.0;
      break;
      case GLUT_KEY_END:
          ang0=ang0-5.0;
      break;

      case GLUT_KEY_PAGE_UP:
          ang1=ang1+7.0;
      break;
      case GLUT_KEY_PAGE_DOWN:
          ang1=ang1-7.0;
      break;
      case GLUT_KEY_LEFT:
          ang2=ang2+9.0;
      break;
      case GLUT_KEY_RIGHT:
          ang2=ang2-9.0;
      break;

    }
    glutPostRedisplay();
}

void Inicializa (void)
{
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
    gluOrtho2D(-13.0,13.0,-13.0,13.0);
}

int main(void)
{
      glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
      glutCreateWindow("Braço robótico");
      planet=gluNewQuadric();
      glutDisplayFunc(Desenha);
      glutSpecialFunc(TeclasEspeciais);
      Inicializa();
      glutMainLoop();
}



Scripts recomendados

Arquivos utilizados no artigo: "Desenvolvendo um plugin para o XMMS"

Ordenar sequência de números

Derrubando SyGate Profissional Firewall !

Fila em C

Sistema básico de cadastro usando Listas Encadeadas


  

Comentários
[1] Comentário enviado por dibetao em 26/12/2005 - 17:48h

Muito bom o braço mecânico.

[2] Comentário enviado por f_Candido em 16/01/2008 - 01:28h

Fiocou show de bola. Muito bem elaborado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts