viernes, 28 de febrero de 2014

Move figure across arrow keys OpenGL(GLUT)













Código Fuente:



#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/gl.h>
#include <GL/glut.h>
#endif
#include <stdlib.h>
#include <iostream>


using namespace std;

float valor_x=0.0,valor_y=0.0;


void display()
{
glClearColor(0,0,0,0);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();

glPushMatrix();
glTranslatef(valor_x,valor_y,0);
glColor3f(1,0,0);
glRotatef(70,0,1,1);
glutWireCube(0.1);
glPopMatrix();
glFlush();
}

void keyinput(unsigned char key, int x, int  y)
{
    switch(key)
    {
 case 'q':
    exit(0);
    break;
 case 'r':
    glutPostRedisplay();
    break;
    }
}

void  specialKeyInput(int key,int x,int y)
{
    if(key==GLUT_KEY_DOWN)
    {
        valor_y-=0.2;
        if(valor_y<=float(-1.1) and valor_y>float(-1.3))
         valor_y=1.0;
        glutPostRedisplay();
    }

    if(key==GLUT_KEY_UP)
    {
        valor_y+=0.2;
        if(valor_y>=float(1.1) and valor_y<float(1.3))
         valor_y=-1.0;
        glutPostRedisplay();
    }

    if(key==GLUT_KEY_LEFT)
    {
        valor_x-=0.2;
        if(valor_x<=float(-1.1) and valor_x>float(-1.3))
         valor_x=1.0;
        glutPostRedisplay();
    }

    if(key==GLUT_KEY_RIGHT)
    {
        valor_x+=0.2;
        if(valor_x>=float(1.1) and valor_x<float(1.3))
         valor_x=-1.0;
        glutPostRedisplay();
    }


}


int main(int argc, char *argv[])
{
  cerr << "main () \n";
  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
  glutInitWindowSize(500,500);
  glutCreateWindow("");
  glutDisplayFunc(display);
  glutKeyboardFunc(keyinput);
  glutSpecialFunc(specialKeyInput);
  glutMainLoop();
}

miércoles, 26 de febrero de 2014

Figures predesigned of OpenGL(glut)


Código Fuente:
#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/gl.h>
#include <GL/glut.h>
#endif
#include <stdlib.h>
#include <iostream>


using namespace std;

void display()
{
cerr << "display() \n";
glClearColor(0,0,0,0);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();


glPushMatrix();
glTranslatef(-0.8,0.8,0.0);
glColor3f(1,0,1);
glScalef(0.8,0.8,0.8);
glRotatef(45,0,1,1);
glutWireSphere(0.2,15,15);
glPopMatrix();


glPushMatrix();
glTranslatef(-0.4,0.8,0.0);
glColor3f(1,1,0);
glScalef(0.8,0.8,0.8);
glRotatef(90,1,0,1);
glutWireCone(0.2,0.5,10,10);
glPopMatrix();


glPushMatrix();
glTranslatef(0,0.8,0.0);
glColor3f(0,1,1);
glScalef(0.8,0.8,0.8);
glRotatef(60,0,1,1);
glutWireCube(0.2);
glPopMatrix();

glPushMatrix();
glTranslatef(-0.8,0.2,0.0);
glColor3f(0,0,1);
glScalef(0.8,0.8,0.8);
glRotatef(60,0,1,1);
glutWireTorus(0.1,0.1,10,10);
glPopMatrix();



glPushMatrix();
glTranslatef(-0.5,0.2,0.0);
glColor3f(1,1,1);
glScalef(0.2,0.2,0.2);
glRotatef(30,0,1,1);
glutWireOctahedron();
glPopMatrix();


glPushMatrix();
glTranslatef(-0.1,0.2,0.0);
glColor3f(0,0,1);
glScalef(0.1,0.1,0.1);
glRotatef(30,0,1,1);
glutWireDodecahedron();
glPopMatrix();


glPushMatrix();
glTranslatef(0.3,0.2,0.0);
glColor3f(1,0,0);
glScalef(0.2,0.2,0.2);
glRotatef(60,0,1,1);
glutWireIcosahedron();
glPopMatrix();


glPushMatrix();
glTranslatef(0.7,0.2,0.0);
glColor3f(0,1,1);
glScalef(0.2,0.2,0.2);
glRotatef(60,0,1,1);
glutWireOctahedron();
glPopMatrix();


glPushMatrix();
glTranslatef(0.5,0.75,0.0);
glColor3f(1,1,0);
glScalef(0.8,0.8,0.8);
glRotatef(60,0,1,1);
glutSolidTeapot(0.2);
glPopMatrix();


glFlush();
}


int main(int argc, char *argv[])
{
  cerr << "main () \n";
  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
  glutInitWindowSize(550,450);
  glutCreateWindow("");
  glutDisplayFunc(display);
  glutMainLoop();
}

martes, 18 de febrero de 2014

Lines Matrix and points Matrix with OpenGL(GLUT)

Matriz De Lineas
Código fuente:
/*
 * GLUT Shapes Demo
 *
 * Written by Nigel Stewart November 2003
 *
 * This program is test harness for the sphere, cone
 * and torus shapes in GLUT.
 *
 * Spinning wireframe and smooth shaded shapes are
 * displayed until the ESC or q key is pressed.  The
 * number of geometry stacks and slices can be adjusted
 * using the + and - keys.
 */

#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/gl.h>
#include <GL/glut.h>
#endif

#include <stdlib.h>



static void display(void)
{
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 glClear(GL_COLOR_BUFFER_BIT);
 glPointSize(10);
 glLineWidth(5);
 glColor3f(1.0,0.0,0.0);
 glBegin(GL_LINES);


    for(double i=-1;i<=1;i+=0.1)
      {
        glVertex2d(-1,-i);
        glVertex2d(1,-i);
        glVertex2d(i,-1);
        glVertex2d(i,1);
      }
     glEnd();
     glFlush();

}

int main(int argc, char *argv[])
{
  glutInit(&argc,argv);
  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  glutInitWindowSize(300,300);
  glutInitWindowPosition(0,0);
  glutCreateWindow("Matriz de Lineas");
  glutDisplayFunc(display);
  glutMainLoop();
}

Resultado:

Matriz de Puntos 
Código Fuente:

/*
 * GLUT Shapes Demo
 *
 * Written by Nigel Stewart November 2003
 *
 * This program is test harness for the sphere, cone
 * and torus shapes in GLUT.
 *
 * Spinning wireframe and smooth shaded shapes are
 * displayed until the ESC or q key is pressed.  The
 * number of geometry stacks and slices can be adjusted
 * using the + and - keys.
 */

#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/gl.h>
#include <GL/glut.h>
#endif

#include <stdlib.h>



static void display(void)
{
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 glClear(GL_COLOR_BUFFER_BIT);
 glPointSize(10);
 glLineWidth(5);
 glColor3f(1.0,0.0,0.0);
 glBegin(GL_POINTS);


    for(double x=-1; x<=1;x+=0.1)
    {
        for(double y=1;y>=-1;y-=0.1)
        {

            glVertex2f(x,y);
        }

    }

     glEnd();
     glFlush();

}


int main(int argc, char *argv[])
{
  glutInit(&argc,argv);
  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  glutInitWindowSize(300,300);
  glutInitWindowPosition(0,0);
  glutCreateWindow("Matriz de Puntos");
  glutDisplayFunc(display);
  glutMainLoop();
}

Resultado:

lunes, 17 de febrero de 2014

Nested Triangles OpenGL (GLUT)

Código Fuente

#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/gl.h>
#include <GL/glut.h>
#endif

#include <stdlib.h>

static void display(void)
{
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 glClear(GL_COLOR_BUFFER_BIT);
 glPointSize(10);
 glLineWidth(5);
 glColor3f(1.0,0.0,0.0);
 glBegin(GL_TRIANGLES);

for(double i=1;i>0.1;i-=0.1)
{
    glColor3f(-i,i,-i);

    glVertex2f(-i,-i);
    glVertex2f(i,-i);
    glVertex2f(0,i);
}


     glEnd();
     glFlush();

}


int main(int argc, char *argv[])
{
  glutInit(&argc,argv);
  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  glutInitWindowSize(200,200);
  glutInitWindowPosition(0,0);
  glutCreateWindow("Triangulos");
  glutDisplayFunc(display);
  glutMainLoop();
}
Resultado


Drawing nested squares OpenGL(GLUT)

Código Fuente

#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/gl.h>
#include <GL/glut.h>
#endif

#include <stdlib.h>



static void display(void)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT);
glPointSize(10);
glLineWidth(5);
glBegin(GL_QUADS);


for(double i=1;i>=0;i-=0.1)
{
glColor3f(i,-i,-i);

glVertex2f(-i,i);
glVertex2f(i,i);
glVertex2f(i,-i);
glVertex2f(-i,-i);
}


glEnd();
glFlush();

}


int main(int argc, char *argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(200,200);
glutInitWindowPosition(0,0);
glutCreateWindow("Cuadros");
glutDisplayFunc(display);
glutMainLoop();
}

Resultado


sábado, 8 de febrero de 2014

Software Elements GUI

Historia de la GUI

Precursores
Los investigadores del Stanford Research Institute liderados por Douglas Engelbart, desarrollaron una interfaz de hipervínculos en modo texto gobernada por un ratón, que también inventaron. Este concepto fue ampliado y trasladado al entorno gráfico por los investigadores del Xerox PARC en la ciudad estadounidense de Palo Alto. El entorno se denominó PARC User Interface y en él se definieron los conceptos de ventanas, casilla de verificación, botones de radio, menús y puntero del ratón. La interfaz fue implementada comercialmente en el computador Xerox Star 8010.
Xerox Alto

El Xerox Alto, desarrollado en el Xerox PARC en 1973, fue el primer ordenador personal, así como el primero que utilizó la metáfora de escritorio y una interfaz gráfica de usuario.
Xerox Star 8010

La estación de trabajo Xerox Star, conocida oficialmente como el "8010 Star Information System" (Sistema de Información Estrella 8010) fue introducida por Xerox Corporation en 1981. Fue el primer sistema comercial en incorporar varias tecnologías que han llegado a ser hoy en día corrientes en computadores personales, incluyendo la pantalla con bitmaps en lugar de solo texto, una interfaz gráfica de usuario basada en ventanas, iconos, carpetas, ratón, red Ethernet, servidores de archivos, servidores de impresoras y e-mail.
Apple Lisa, Macintosh, Apple II GS

Tras una visita al Xerox PARC en 1979, el equipo de Apple encabezado por Jef Raskin se concentra en diseñar un entorno gráfico para su nueva generación de 16 bits, que se verá plasmado en el Apple Lisa en 1983. Ese sistema gráfico es portado al sucesor del Apple II, el Apple II GS. Un segundo equipo trabaja en el Apple Macintosh que verá la luz en 1984 con una versión mejorada del entorno gráfico del Lisa (pretendimos hacer un ordenador tan simple de manejar como una tostadora). Desde ese momento el Mac reinará como paradigma de usabilidad de un entorno gráfico; pese a que por debajo el sistema operativo sufra cambios radicales, los usuarios no avanzados no son conscientes de ello y no sufren los problemas de otras plataformas.
Workbench

Workbench es el nombre dado por Commodore a la interfaz gráfica del AmigaOS, el sistema operativo del Commodore Amiga lanzado en 1985. A diferencia de los sistemas más populares (GEM, Mac OS, MS Windows...) es un verdadero entorno multitarea sólo rivalizado por la interfaz X Window System de los diferentes sabores de Unix. La frase más repetida por un "amiguero" es: "para masacrar marcianos, formatear un diskette y enviar o recibir un Fax todo a la vez y sin colgarse, necesitas un 386 con disco duro, 16 MB de RAM y OS/2; un Amiga 500 con disquete y sólo su memoria base (512 KB de RAM y 512 KB de ROM) es capaz de todo eso". Aunque muy popular por los espectaculares (para entonces) gráficos de la máquina y su gran plantel de videojuegos, será la negligencia de sus sucesivos propietarios la principal causa de que acabe restringido a sólo la plataforma Amiga.
GEOS

Para el Commodore 64 y su sucesor el Commodore 128 se desarrolló el entorno gráfico GEOS en 1986. Este entorno se portó al IBM PC, fue utilizado en varias PDA y Nokia lo usó como base de su actual sistema operativo.
GEM

GEM (Graphical Environment Manager) es un GUI diseñado por Digital Research en 1988 para ejecutarse sobre varios sistemas operativos de línea de comandos del IBM PC y compatibles: funciona tanto sobre IBM DOS /MS-DOS como sobre CP/M 86. Su máxima popularidad en el PC llega de la mano del Amstrad PC1512 y del Amstrad PC1640, los clónicos que rompieron en Europa la barrera del precio popularizando el PC, hasta ese momento relegado mayoritariamente a oficinas. Aunque se incorpora en su primera generación de portátiles y en el Sinclair PC200, será sustituido en la siguiente generación de PCs Amstrad por Microsoft Windows 2.xx. En el PC vivirá una segunda juventud al venir de serie con DR-DOS como TaskMax.
Pero será en los Atari ST y sucesores donde se convertirá en el entorno gráfico oficial de la plataforma, alcanzando gran popularidad, tanto por ser en principio una alternativa barata al MAC en autoedición, como por hacerse con el nicho de mercado de la música profesional.
Apple y Microsoft
A principios de los años ochenta (en 1982) Apple, que había comenzado como una micro-empresa formada por dos empleados (Steve Jobs y Steve Wozniak) había crecido hasta convertirse en una empresa de 300 millones de dólares.
En el año 1983 Apple ya se había convertido en una empresa de 1000 millones de dólares, el mismo valor que IBM.
En 1987 IBM se vio obligada a entrar en el mercado de los ordenadores personales con entorno gráfico con su modelo PS/2, aliándose con Bill Gates (Microsoft), que había desarrollado el OS/2. La interfaz gráfica de este sistema operativo era muy similar a la de Apple.

Principales Elementos de GUI


  • La ventana es el área sobre la pantalla sobre la que se muestra información, con su contenido siendo mostrada independientemente del resto de la pantalla. Un ejemplo de ventana es la que aparece en la pantalla cuando haces click en el icono de tu navegador de internet favorito. Es fácil manipular una ventana: puede ser abierta o cerrada con un simple click; pude moverse a cualquier área mediante arrastrarla; puede cambiarse su tamaño o minimizarse; puede colocarse enfrente o detrás de otra ventana, como las molestas ventanas en esos sitios que visitas; sus barras de desplazamiento pueden ser usadas para navegar las secciones que contiene; múltiples ventanas pueden ser abiertas al mismo tiempo con diferentes aplicaciones, etc

  • Los menús permiten al usuario ejecutar comandos seleccionándolos de una lista de opciones. Las opciones disponibles pueden seleccionarse usando el ratón o el teclado. El uso de menús acelera la curva de aprendizaje de un nuevo usuario para entender una aplicación.

  • La barra de menú es mostrada horizontalmente a lo largo de la parte superior de la ventana. El menú desplegable es comúnmente asociado con este tipo de menús. Cuando el usuario hace click sobre la opción el menú desplegable aparece.
  • La barra de herramientas es un tipo de menú que muestra mayormente iconos en vez de texto.
  • El menú tiene un título visible dentro de la barra de menú. Su contenido solo es mostrado cuando el usuario lo selecciona con un click. El usuario puede seleccionar los elementos dentro del menú desplegable. Normalmente, cuando el usuario hace click en cualquier otra parte del contenido el menu desaparece.
  • El menú contextual es invisible hasta que el usuario hace click derecho sobre el objeto, o al mover el cursor sobre el objeto y presionar la tecla de menú contextual del teclado, entonces el menú contextual aparecerá cerca del cursor.
  • Los extras son elementos individuales dentro o al lado de un menú.
  • Un icono es una pequeña imagen que representa objetos como archivos, programas, páginas web, o comandos. Estos son una manera rápida de ejecutar comandos, abrir documentos, ejecutar programas, etc. Los iconos están diseñados de tal manera que no se requiera mayor explicación para entender que significa la pequeña imagen. 

Computer Graphic Applications


APLICACIONES GRÁFICAS POR COMPUTADORA
u  La computación gráfica o gráficos por ordenador es el campo de la informática visual, donde se utilizan computadoras tanto para generar imágenes sintéticamente como integrar o cambiar la información visual y especial probada del mundo real.


Aplicaciones de la graficación

u  Interpretando en 3D en tiempo real (usado en juegos de vídeo).
u  Animación por computadora.
u  Captura de vídeo y creación de vídeo interpretado.
u  Edición de efectos especiales (a menudo usado para películas y televisión).
u  Edición de imagen y modelo (usado para ingeniería y objetivos médicos).


¿Qué es el CAD?
El diseño asistido por computadora en siglas DAO o mejor conocido como CAD (Computer Aided Desing) se trata básicamente de una base de datos de entidades geométricas como puntos, líneas o arcos, etc. Con el CAD se puede operar una interfaz gráfica para diseñar lo que se pida
.
Ventajas del CAD

u  En general los sistemas CAD mejoran la calidad del diseño y dan como resultado menor tiempo de realización de proyectos, a continuación se mencionan algunas de sus ventajas
u  La calidad de los dibujos, así como su manejo: los sistemas CAD/CAM operan a su máxima efectividad cuando los detalles estándar de los dibujos y los procedimientos de operación están en todo momento presentes. El software CAD requiere de entradas de información precisas, forzando al usuario a ser explícito en cuanto a acotaciones o datos del proyecto.
u  Diseño integrado: una base de datos, que es usada para diseño y análisis resulta en una relación de datos cohesiva, en vez de un diseño fragmentado, por lo tanto esto causa la ventaja de no repetir detalles en diseño y otros más en análisis al utilizar los dos en el mismo software.
u  Simulación: muchos sistemas de CAD, poseen la capacidad de modelar piezas en 3-D, al mostrar las piezas en forma isométrica ya no se requiere presentarlas en forma física.
u  Reducción de tiempo: la productividad (eficiencia) se logra a través de la automatización, en vez de los métodos manuales, al aplicar este tipo de programas, estos poseen librerías y dan a conocer detalles que facilitan el proyecto, por lo tanto existen menos demoras y se pueden terminar en menos tiempo.
Descargar Presentación