viernes, 30 de agosto de 2013

opengl ( estructura de un programa)




 
void glOrtho( GLdouble left,
GLdouble right,
GLdouble bottom,
GLdouble top,
GLdouble nearVal,
GLdouble farVal);




Referencias:


Actividad  a:  diseñar un programa para dibujar su cubo en dos dimensiones


Actividad b:

Investigar que es :

  1. Una imagen rasterizada
  2. Una imagen vectorial
  3. Que formatos  son de imagen rasterizada y que formatos de imagen vetorial

 

opengl Instalacion

Configurar OpenGL y GLUT en Windows (Visual Studio)


Configurar OpenGL y GLUT en Visual Studio de Windows es también muy sencillo.
  1. Aunque OpenGL viene con todas las versiones de Windows, GLUT hace falta descargarlo. Esto se puede hacer desde la web de Nate Robins (glut-3.7.6-bin.zip).
  2. Después de descomprimirlo borramos los ficheros glut.def y README-win32.txt.
  3. Copiamos la dll glut32.dll en %WinDir%\System32 (C:\Windows\System32 por ejemplo).
  4. También copiamos la librería glut32.lib en el subdirectorio lib de VC (C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib en Windows 7/Vista o C:\Program Files\Microsoft Visual Studio 9.0\VC\lib en Windows XP por ejemplo).
  5. Después crear el subdirectorio gl en el directorio include de VC y copiar allí el fichero de cabecera glut32.h (C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\gl o C:\Program Files\Microsoft Visual Studio 9.0\VC\include\gl).
guia opengl

 

abrir visual studio C++
 
2 crear proyecto


3.crear archivo fuente
 
4. copiar o escribir el codigo


 
5. resultado de la ejecución




 
 
 

Cubo 3 dimensiones Viernes 30 de Agosto

Actividad: cubo tres dimensiones

con el dibujo del cubo de actividades anteriores traslade  el cubo a su representacion en 3 dimensiones (x,y,z)

utilizando los comandos up, down y move    diseñe la secuencia de pasos para dibujarlo

publicar en el blog sus resultados

miércoles, 28 de agosto de 2013

opengl jueves 29 Agosto

Actividad práctica
  1. Investigue que es opengl
  2. Como instalar las librerías
  3. Probar el siguiente código
  4. Los resultados de la actividad deben publicarse en su blog , incluyendo una captura de la pantalla donde se muestra los resultados de la ejecución del programa, la secuencia de pasos que realizó desde la instalación de la s librerías, fecha de revision  lunes 2 de Septiembre

/*cubetex.c           */
/* Rotating cube with texture mapping */
/* mouse buttons control direction of
/* rotation, keyboard allows start/top/quit */
/* E. Angel, Interactive Computer Graphics */
/* A Top-Down Approach with OpenGL, Third Edition */
/* Addison-Wesley Longman, 2003 */
#include <stdlib.h>
#include <GL/glut.h>
GLfloat planes[]= {-1.0, 0.0, 1.0, 0.0};
GLfloat planet[]= {0.0, -1.0,  0.0, 1.0};
 GLfloat vertices[][3] = {{-1.0,-1.0,-1.0},{1.0,-1.0,-1.0},
 {1.0,1.0,-1.0}, {-1.0,1.0,-1.0}, {-1.0,-1.0,1.0},
 {1.0,-1.0,1.0}, {1.0,1.0,1.0}, {-1.0,1.0,1.0}};
 GLfloat colors[][4] = {{0.0,0.0,0.0,0.5},{1.0,0.0,0.0,0.5},
 {1.0,1.0,0.0,0.5}, {0.0,1.0,0.0,0.5}, {0.0,0.0,1.0,0.5},
 {1.0,0.0,1.0,0.5}, {1.0,1.0,1.0,0.5}, {0.0,1.0,1.0,0.5}};
void polygon(int a, int b, int c , int d)
{
/* draw a polygon via list of vertices */
  glBegin(GL_POLYGON);
 glColor4fv(colors[a]);
 glTexCoord2f(0.0,0.0);
 glVertex3fv(vertices[a]);
 glColor4fv(colors[b]);
 glTexCoord2f(0.0,1.0);
 glVertex3fv(vertices[b]);
 glColor4fv(colors[c]);
 glTexCoord2f(1.0,1.0);
 glVertex3fv(vertices[c]);
 glColor4fv(colors[d]);
 glTexCoord2f(1.0,0.0);
 glVertex3fv(vertices[d]);
 glEnd();
                          }
void colorcube(void)
{
/* map vertices to faces */
 polygon(0,3,2,1);
 polygon(2,3,7,6);
 polygon(0,4,7,3);
 polygon(1,2,6,5);
 polygon(4,5,6,7);
 polygon(0,1,5,4);
}
static GLfloat theta[] = {0.0,0.0,0.0};
static GLint axis = 2;
void display(void)
{
/* display callback, clear frame buffer and z buffer,
   rotate cube and draw, swap buffers */
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 glLoadIdentity();
 glRotatef(theta[0], 1.0, 0.0, 0.0);
 glRotatef(theta[1], 0.0, 1.0, 0.0);
 glRotatef(theta[2], 0.0, 0.0, 1.0);
 colorcube();

 glutSwapBuffers();
}
void spinCube()
{
/* Idle callback, spin cube 2 degrees about selected axis */
 theta[axis] += 2.0;
 if( theta[axis] > 360.0 ) theta[axis] -= 360.0;
 glutPostRedisplay();
}
void mouse(int btn, int state, int x, int y)
{
/* mouse callback, selects an axis about which to rotate */
 if(btn==GLUT_LEFT_BUTTON && state == GLUT_DOWN) axis = 0;
 if(btn==GLUT_MIDDLE_BUTTON && state == GLUT_DOWN) axis = 1;
 if(btn==GLUT_RIGHT_BUTTON && state == GLUT_DOWN) axis = 2;
}
void myReshape(int w, int h)
{
    glViewport(0, 0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    if (w <= h)
        glOrtho(-2.0, 2.0, -2.0 * (GLfloat) h / (GLfloat) w,
            2.0 * (GLfloat) h / (GLfloat) w, -10.0, 10.0);
    else
        glOrtho(-2.0 * (GLfloat) w / (GLfloat) h,
            2.0 * (GLfloat) w / (GLfloat) h, -2.0, 2.0, -10.0, 10.0);
    glMatrixMode(GL_MODELVIEW);
}
void key(unsigned char k, int x, int y)
{
 if(k == '1') glutIdleFunc(spinCube);
 if(k == '2') glutIdleFunc(NULL);
 if(k == 'q') exit(0);
}
void
main(int argc, char **argv)
{
   GLubyte image[64][64][3];
   int i, j, r, c;
   for(i=0;i<64;i++)
   {
     for(j=0;j<64;j++)
     {
       c = ((((i&0x8)==0)^((j&0x8))==0))*255;
       image[i][j][0]= (GLubyte) c;
       image[i][j][1]= (GLubyte) c;
       image[i][j][2]= (GLubyte) c;
     }
   }
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(500, 500);
    glutCreateWindow("colorcube");
/* need both double buffering and z buffer */
    glutReshapeFunc(myReshape);
    glutDisplayFunc(display);
   glutIdleFunc(spinCube);
   glutMouseFunc(mouse);
   glEnable(GL_DEPTH_TEST);
   glEnable(GL_TEXTURE_2D);
   glTexImage2D(GL_TEXTURE_2D,0,3,64,64,0,GL_RGB,GL_UNSIGNED_BYTE, image);
   glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
   glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
   glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
   glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
   glutKeyboardFunc(key);
   glClearColor(1.0,1.0,1.0,1.0);
   glutMainLoop();
}

actividad dibujar piramides

Utilizando los comandos UP DOWN y MOVE dibuje las siguientes figuras, puede poner los valores que quiera para los lados de la base y la altura, calcule los valores de los vertices.

publicar resultados en el blog para revision en clase Jueves 29 de Agosto



martes, 27 de agosto de 2013

martes, 20 de agosto de 2013

Inicio semestre Agosto-Diciembre 2013

Actividad #0  creación de un blog
 1. Tener  una cuenta de correo de gmail.
2. Ir a blogger.com y crear una cuenta
3. Siga las instrucciones
4. Crear blog:  Titulo del Blog= Graficacion  direccion = apellidos-graficacion
5.  enviar el enlace a  angelica@itcj.edu.mx

Actividad #1 en el siguiente enlace encontrarás un libro de texto de la materia, debes leer el 1er capítulo, seleccionar 20 palabras para crear un glosario y publicar en su blog individual durante la clase del jueves  22 de Agosto

http://www.scribd.com/doc/39029313/Libro-de-Texto-Para-La-Materia-de-Graficacion
https://docs.google.com/file/d/0B5YKLqw7BEU1VklOandhWFpKWFk/edit?usp=sharing


Actividad #2 Investigue los siguientes conceptos y publique en su blog los resultados, no olvide incluir las fuentes de información

1.Aplicaciones de gráficos de computadora
2. Sistema de gráficos
       Procesador
       Memoria
       frame buffer
       dispositivos de salida
      dispositivos de entrada
3.  disparidad binocular
     información monocular
revise el siguiente enlace

http://www.slideshare.net/AlonsoAlvarez/graficos-por-computadora-1

consulte otras  fuentes para profundizar en cada tema.


actividad viernes 23 de Agosto


Actividad #3.1  lunes 26 de agosto : Leer la información de los siguientes enlaces, hacer un glosario de términos( 15 mínimo) incluirlo en la sección de glosario de su blog bajo el subtitulo de hardware y software dentro del mismo.


Dispositivos                   http://giga.cps.unizar.es/~spd/work/curso_hs/

pantallas lcd                  http://www.xataka.com/hd/como-funciona-un-televisor-lcd

pantallas  de plasma     http://www.profisica.cl/comofuncionan/como.php?id=13

aliasing                          http://es.wikipedia.org/wiki/Aliasing

antialiasing                   
http://es.wikipedia.org/wiki/Antialiasing