Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Graficación por Computadora Dr. Roberto Núñez González1 1Departamento de Matemáticas Ciencias de la Computación Universidad de Sonora 22 de mayo de 2014 Introducción a la Graficación por Computadora Graficación por Computadora Definición Desarrollo Aplicación de la Graficación Elementos de un Sistema Gráfico Conceptos Varios Dispositivos de Despliegue Programa para graficar con Turbo C o GCC/WinBGI Programa para graficar con libreria XForms (linux) Programa para graficar en OpenGL/Mesa3D(linux, windows) Definición La Graficación por Computadora es uno de los muchos campos de las Ciencias de la Computación, donde se utilizan computadoras tanto para generar imágenes visuales sintéticamente como integrar o cambiar la información visual y espacial recopilada del mundo real (Wikipedia). No se le puede asignar un dominio espećıfico, ya que es multidisciplinaria. Desarrollo El desarrollo de la Graficación se debe a dos factores principalmente: I Necesidad de los usuarios I Avances en Hardware y Sofware Aplicación de la Graficación La graficación tiene aplicación en varias áreas del conocimiento: I Interfaces de usuario I Graficado de información en negocios, ciencia y tecnoloǵıa I Despliegue de información I Publicación electrónica I Diseño Asistido por Computadora (CAD) I Simulación y animación para visualización cient́ıfica. I Entretenimiento I Arte I Control de procesos I Cartograf́ıa Aplicación GC Figura: Simulación y visualización del proceso de desfibrilización en SCIRun. http://www.sci.utah.edu/ Aplicación GC Figura: Visualización de part́ıcula atómicas en 3D, confinadas magnéticamente en un reactor de fusión simulado. http://www.sci.utah.edu/ Aplicación GC Figura: Simulación de la explosión de un contenedor. http://www.sci.utah.edu/ Aplicación GC Figura: Volume rendered temperature data from the transient simulation of the 10-m heptane pool fire. http://www.sci.utah.edu/ Elementos de un Sistema Gráfico Los elementos de un sistema gráfico son los siguientes: I Procesador (CPU) I Procesador Gráfico (GPU) I Memoria I Frame-Buffer (VRAM, DRAM) I Dispositivo Entrada I Dispositivo Salida (Raster display, Vector display) Conceptos Varios I El frame buffer es la memoria de video que es utilizada para almacenar la imágen desplegada en la pantalla de la computadora. Un pixel puede tener diferentes definiciones, pero para nuestro estudio podemos considerarlo como el elemento más pequeño de la pantalla de la computadora que puede ser iluminado con un cierto color e intensidad. Una gráfica raster es una gráfica que se almacena en la memoria de la computadora usando una malla para grabar la información (como color e intensidad) de cada pixel que forma la imágen. La idea detras de las gráficas tipo raster es que una imágen es dividida en un mosaico regular de pequeñas celdas, llamadas pixeles, cada uno de los cuales es de un color e intensidad dados. Conceptos Varios II Una gráfica vectorial es una gráfica de computadora que es almacenada en la memoria de la computadora usando fórmulas matemáticas. bit-mapped graphics —– raster graphics voxel —– pixel en 3D Dispositivos de Despliegue Los dispositivos de despliegue tipo raster almacenan las primitivas de despliegue (lineas, caracteres, áreas sólidas, etc) en un memoria especial llamada buffer de refresco. Estas primitivas que forman una imágen que va a ser deplegada, se almacenan como una matriz de pixeles (columnas y renglones de pixeles). La resolución de pantalla es el número de ṕıxeles que puede ser mostrado en la pantalla. Viene dada por el producto del ancho por el alto, medidos ambos en ṕıxeles, con lo que se obtiene una relación, llamada relación de aspecto. En esta relación de aspecto, se puede encontrar una variación, esta de acuerdo a la forma del monitor y de la tarjeta grfica. Programa para graficar con Turbo C o GCC/WinBGI #i n c l u d e<s t d i o . h> #i n c l u d e<s t d l i b . h> #i n c l u d e<g r a p h i c s . h> i n t main ( v o i d ) { i n t g d r i v e r=DETECT, gmode , e r r o r c o d e ; i n i t g r a p h (& g d r i v e r ,&gmode , ” ” ) ; e r r o r c o d e=g r a p h r e s u l t ( ) ; i f ( e r r o r c o d e != grOK ) { p r i n t f (”ERROR GRAFICO : %s\n ” , g r a p h e r r o r m s g ( e r r o r c o d e ) ) ; p r i n t f (” P r e s i o n a r a l g u n a t e c l a para s a l i r : ” ) ; g e t c h ( ) ; e x i t ( 1 ) ; } l i n e ( 0 , 0 , getmaxx ( ) , getmaxy ( ) ) ; g e t c h ( ) ; c l o s e g r a p h ( ) ; r e t u r n ( 0 ) ; } Programa para graficar con libreria XForms (linux) #include<stdio.h> #include "forms.h" int main(int argc, char *argv[]) { int rx,ry; /* resolucion en x e y */ FL_FORM *forma; /* forma y objeto para xforms */ FL_OBJECT *objeto; /* Inicializamos las xforms: */ fl_initialize(&argc, argv, 0, 0, 0); /* Especificamos la resolucion (640x480): */ rx=640; ry=480; /* Creamos la ventana: */ forma=fl_bgn_form(FL_NO_BOX,rx,ry); objeto=fl_add_box(FL_FLAT_BOX,0,0,rx,ry,""); fl_set_object_color(objeto,FL_WHITE,0); fl_end_form(); fl_set_form_position(forma,300,100); fl_show_form(forma,FL_PLACE_POSITION,FL_FULLBORDER,"Dibujos"); /* Dibujamos algunas cosas: */ fl_line(10,10,rx-10,10,FL_BLACK); fl_rect(20,20,40,ry/2,FL_BLUE); fl_ovalarc(0,30,30,30,20,0,3600,FL_RED); fl_do_forms(); } Programa para graficar en OpenGL/Mesa3D(linux, windows) I #include<stdio.h> #include<stdlib.h> #include<math.h> #include<GL/glut.h> // Prototipos de funciones void disp(void); void keyb(unsigned char key, int x, int y); // Identificador de la ventana static int win; int main(int argc, char **argv) { ////////// // INIT // ////////// // Inicia GLUT glutInit(&argc, argv); // Se especifica el modo de despliegue a tipo RGB y // con buffer sencillo (no animacion) glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE); // Se define el tamano de la ventana glutInitWindowSize(500,500); Programa para graficar en OpenGL/Mesa3D(linux, windows) II // Se define la posicion donde la ventana se dibujara glutInitWindowPosition(100,100); // Si queremos despliegue de pantalla completa: // glutFullScreen(); // Se crea la ventana, se asigna el nombre y se guarda // el identificador de la ventana win = glutCreateWindow("Primera ventana"); ////////////// // CALLBACK // ////////////// glutDisplayFunc(disp); glutKeyboardFunc(keyb); //////////// // OPENGL // //////////// // SE DEFINE EL COLOR QUE SE UTILIZA PARA LIMPIAR LA PANTALLA glClearColor(0.0,0.0,0.0,0.0); // ENTRA EN EL CICLO PRINCIPAL glutMainLoop(); return 0; } Programa para graficar en OpenGL/Mesa3D(linux, windows) III //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// void disp(void) { // LIMPIA LA PANTALLA glClear(GL_COLOR_BUFFER_BIT); // DIBUJAR ALGO glutWireTeapot(0.5); } //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// void keyb(unsigned char key, int x, int y) { printf("Se presiono %c en las coordenadas (%d,%d)\n",key,x,y); //cout << "Se presiono " << key << " en las coordenadas(" << x << "," << y << ")"; //cout << endl; if(key == ’q’){ printf("Salir\n"); //cout << "Salir" << endl; glutDestroyWindow(win); exit(0); } } Graficación por Computadora Definición Desarrollo Aplicación de la Graficación Elementos de un Sistema Gráfico Conceptos Varios Dispositivos de Despliegue Programa para graficar con Turbo C o GCC/WinBGI Programa para graficar con libreria XForms (linux) Programa para graficar en OpenGL/Mesa3D(linux, windows)
Compartir