miércoles, 29 de febrero de 2012


Preguntas



¿Puede diferenciar entre los dos tipos de proyección?

Si por que la proyección perspectiva realiza un tipo de ilusión óptica; ya que depende de el Angulo en que se observa el objeto, mientras que la otra se observa de una sola forma.



¿Para que se usan las matrices y como las maneja OpenGL?

Se utilizan para tener puntos de referencia sobre los giros del mismo punto, y llevan acabo gracias a los métodos ya hechos para el programa.



¿Que es la matriz identidad y para que se utiliza en OpenGL?

La matriz identidad cumple con la propiedad de ser el elemento neutro del producto de matrices, esto quiere decir que el producto de cualquier matriz por la matriz identidad no tiene ningún efecto.



Proyección Ortogonal

Coordenadas oculares

Las coordenadas oculares se sitúan en el punto de vista del observador, sin importar las transformaciones que tengan lugar. Por tanto, estas coordenadas representan un sistema virtual de coordenadas fijo usado como marco de referencia común


Las transformaciones son las que hacen posible la proyección de coordenadas 3D sobre superficies 2D. También son las encargadas de mover, rotar y escalar objetos. En realidad, estas transformaciones no se aplican a los modelos en sí, si no al sistema de coordenadas, de forma que si se quiere rotar un objeto, no lo se le rota, sino que se rota el eje sobre el que se sitúa

Transformaciones del observador


La transformación del observador es la primera que se aplica a la escena, y se usa para determinar el punto más ventajoso de la escena. Por defecto, el punto de vista está en el origen (0,0,0) mirando en dirección negativa del eje z. La transformación del observador permite colocar y apuntar la cámara donde y hacia donde se quiera. Todas las transformaciones posteriores tienen lugar basadas en el nuevo sistema de coordenadas modificado.

Transformaciones del modelo


Estas transformaciones se usan para situar, rotar y escalar los objetos de la escena. La apariencia final de los objetos depende en gran medida del orden con el que se hayan aplicado las transformaciones. Por ejemplo, en la ilustración 4.2 podemos ver la diferencia entre aplicar primero un rotación y luego una translación, y hacer esto mismo invirtiendo el orden.

Transformaciones de la proyección


La transformación de proyección se aplica a la orientación final del modelador. Esta proyección define el volumen de visualización y establece los planos de trabajo. A efectos prácticos, esta translación especifica cómo se traslada una escena finalizada a la imagen final de la pantalla

Transformaciones de la vista


En el momento en que se ha terminado todo el proceso de transformaciones, solo queda un último paso: proyectar lo que hemos dibujado en 3D al 2D de la pantalla, en la ventana en la que estamos trabajando. Esta es la denominada transformación de la vista.

Matrices


Las matemáticas que hay tras estas transformaciones se simplifican gracias a las matrices. Cada una de las transformaciones de las que se acaba de hablar puede conseguirse multiplicando una matriz que contenga los vértices por una matriz que describa la transformación. Por tanto todas las transformaciones ejecutables con ogl pueden describirse como la multiplicación de dos o más matrices.

El canal de transformaciones


Para poder llevar a cabo todas las transformaciones de las que se acaba de hablar, deben modificarse dos matrices: la matriz del Modelador y la matriz de Proyección. OpenGL proporciona muchas funciones de alto nivel que hacen muy sencillo la construcción de matrices para transformaciones. Éstas se aplican sobre la matriz que este activa en ese instante. Para activar una de las dos matrices utilizamos la función glMatrixMode. Hay dos parámetros posibles:

glMatrixMode(GL_PROJECTION);

activa la matriz de proyección, y

glMatrixMode(GL_MODELVIEW);

activa la del modelador. Es necesario especificar con que matriz se trabaja, para poder aplicar las transformaciones necesarias en función de lo que se desee hacer

Rotación


Para rotar, tenemos también una función de alto nivel que construye la matriz de transformación y la multiplica por la matriz activa, glRotate. Lleva como parámetros el ángulo a rotar (en grados, sentido horario), y después x, y y z del vector sobre el cual se quiere rotar el objeto. Una rotación simple, sobre el eje y, de 10º sería

glRotatef(10, 0.0f, 1.0f, 0.0f);

Escalado


Una transformación de escala incrementa el tamaño de nuestro objeto expandiendo todos los vértices a lo largo de los tres ejes por los factores especificados. La función glScale lleva como parámetros la escala en x, y y z, respectivamente. El valor 1.0f es la referencia de la escala, de tal forma que la siguiente línea:

glScalef(1.0f, 1.0f, 1.0f);

no modificaría el objeto en absoluto. Un valor de 2.0f sería el doble, y 0.5f sería la mitad. Por ejemplo, para ensanchar un objeto a lo largo de su eje z, de tal forma que quedase cuatro veces más “alargado” en este eje, sería:

glScalef(1.0f, 1.0f, 4.0f);

Rotación


Para rotar, tenemos también una función de alto nivel que construye la matriz de transformación y la multiplica por la matriz activa, glRotate. Lleva como parámetros el ángulo a rotar (en grados, sentido horario), y después x, y y z del vector sobre el cual se quiere rotar el objeto. Una rotación simple, sobre el eje y, de 10º sería

glRotatef(10, 0.0f, 1.0f, 0.0f);

Escalado


Una transformación de escala incrementa el tamaño de nuestro objeto expandiendo todos los vértices a lo largo de los tres ejes por los factores especificados. La función glScale lleva como parámetros la escala en x, y y z, respectivamente. El valor 1.0f es la referencia de la escala, de tal forma que la siguiente línea:

glScalef(1.0f, 1.0f, 1.0f);

no modificaría el objeto en absoluto. Un valor de 2.0f sería el doble, y 0.5f sería la mitad. Por ejemplo, para ensanchar un objeto a lo largo de su eje z, de tal forma que quedase cuatro veces más “alargado” en este eje, sería:

glScalef(1.0f, 1.0f, 4.0f);

--------------------------------------------------------------------------------------------------------------------------

Transformaciones geométricas

Es una rama la cual estudia como realizar despliegues visuales en el monitor de la computadora, dispositivos móviles y otros artefactos, se aplica a objeto s de 2 y 3 dimensiones.

      Dos dimensiones son (x,y)

      Tres dimensiones son (x,y,z)

      Dos dimensiones :

       Escalación

      Traslación

      Rotación 


Tres dimensiones
Escalación

     Traslación

     Rotación en torno en cada eje


Escalacion en 2D

Requiere 2 parámetros:

Sx = Factor de escalación en X

Sy = Factor de escalación en Y

Sx,Sy > 1 = Aumenta la dimensión

Sx,Sy < 1 = Disminuye la dimensión

Sx,Sy = 1 =Se mantiene la dimensión


Traslación en 2D

Nos permitirá cambiar la posición de un objeto, moviéndolo en línea recta desde una posición inicial a la posición final.

Requiere 2 parámetros:

      Tx = Desplazamiento en X

      Ty = Desplazamiento en Y

      Tx, Ty > 0 = Desplazamiento positivo

      Tx, Ty < 0 = Desplazamiento negativo

     Tx,Ty = 0 = No hay desplazamiento


Rotación en 2D

      Nos permite rotar o girar un objeto en torno al origen un ángulo dado.
Requiere 1 parámetro:

      q = Ángulo de rotación

      q > 0 = Rotación contraria a sentido de las manecillas del reloj

       q < 0 = Rotación en el sentido de las manecillas del reloj

      q = 0 = Sin rotación


 Escalacion en 3D

     Nos permitirá cambiar las dimensiones de un objeto.

     Requiere 3 parámetros:

     Sx = Factor de escalación en X

     Sy = Factor de escalación en Y

    Sz = Factor de escalación en Z

    Sx,Sy,Sz > 1 = Aumenta la dimensión

    Sx,Sy,Sz < 1 = Disminuye la dimensión

    Sx,Sy,Sz = 1 = Se mantiene la dimensión



Traslación 3D

      Nos permitirá cambiar la posición de un objeto, moviéndolo en línea recta desde una posición inicial a la posición final.

      Requiere 3 parámetros:

     Tx = Desplazamiento en X

     Ty = Desplazamiento en Y

     Tz = Desplazamiento en Z

    Tx, Ty,Tz > 0 = Desplazamiento positivo

    Tx, Ty,Tz < 0 = Desplazamiento negativo

    Tx,Ty,Tz = 0 = No hay desplazamiento



Representación matricial

Facilita el cómputo de las transformaciones a simples multiplicaciones matriciales.

Se requiere representar las coordenadas en forma homogénea:

(x,y) se representa como (x,y,1)

(x,y,z) se representa como (x,y,z,1)



Coordenadas Homogéneas

Las coordenadas homogéneas agregan un elemento o dimensión más al que tenemos, para representar puntos y vectores.

Existe una relación lineal entre un punto en 2D y su representación en coordenadas homogéneas. Al extender un punto en 2D a uno en 3D, éste se convierte en una línea recta de la forma, P = ( tx, ty, tw ).

jueves, 23 de febrero de 2012


Capitulo II
Transformaciones geométricas

Un paquete grafico ayuda a un usuario a decidir que parte de una imagen se debe ver y en donde se debe colocar. Cuando hablamos de imágenes de dos dimensiones, el plano conveniente es el de X,Y .El usuario puede especificar cualquier parte de una imagen definida por medio de un paquete gráfico. Por medio de un sistema de coordenadas que sea conveniente, referido al sistema de referencia de coordenadas del mundo.

En el caso de imágenes bidimensionales, una vista se selecciona especificando una región del plano xy que contiene la imagen total o cualquier parte de ella. Un usuario puede seleccionar una única zona para visualización, o varias zonas para visualización simultánea o para una secuencia animada panorámica a través de una escena. 

Transformaciones bidimensionales

Traslación
La traslación es una transformación del cuerpo que mueve objetos sin deformarlos, se traslada cada punto del objeto la misma distancia.
Los polígonos se trasladan al sumar el vector de traslación a la posición de coordenadas de cada vértice y se vuelve a generar el polígono utilizando un nuevo conjunto de coordenadas y vértices y las especificaciones actuales de los atributos.

Rotación

Se aplica una rotación bidimensional en un objeto al cambiar su posición a lo largo de la trayectoria de una circunferencia en el plano de xy. Para generar una rotación, especificamos un ángulo de rotación
θ y la posición (xr, yr) del punto de rotación (o punto pivote) en torno al se gira el objeto.

Escalación

Una transformación de escalación altera el tamaño de un objeto. Se puede realizar esta operación para polígonos al multiplicar los valores de coordenadas (x, y) de cada vértice por los factores de escalación sx y sx  para producir las coordenadas transformadas (x´,y´).

Coordenadas homogéneas y representación matricial
Las representaciones de matriz o representaciones matriciales son métodos estándar para implementar transformaciones en sistemas de gráficas. En muchos sistemas, las funciones de rotación y escalación producen transformaciones con respecto del origen delas coordenadas como en las ecuaciones.
En las aplicaciones de diseño y de creación de imágenes, realizamos traslaciones, rotaciones y escalaciones para ajusta los componentes de la imagen en sus posiciones apropiadas. En este tema consideramos cómo se pueden volver a formular las representaciones de la matriz de modo que se pueden procesar de manera eficiente esas secuencias.
Es posible expresar cada una de las transformaciones básicas en la forma de matriz general con las posiciones de coordenadas P y P´ representadas como columnas de  vector.

Composición de transformaciones bidimensionales


Con las representaciones de matriz del tema anterior, podemos establecer una matriz para cualquier secuencia de transformaciones como una matriz de transformación compuesta al calcular  el producto de la matriz de las transformaciones individuales. 

Transformación ventana-área de vista

Algunos paquetes gráficos permiten que el programador especifique coordenadas de primitivas de salida en un sistema de coordenadas de mundo de punto flotante, usando las unidades que sean relevantes para el programa de aplicación: angstroms, micras, metros, millas, años luz, etcétera. Se emplea el término de mundo porque el programa de aplicación representa un mundo que se crea o presenta interactivamente para el usuario.

Transformaciones de composición general y de eficiencia computacional.
Una transformación bidimensional general, que representa una combinación de traslaciones rotaciones y escalaciones se puede expresar como una matriz de 3x3.

Las transformaciones geométricas son transformaciones afines. Esto es, pueden expresarse como una función lineal de posiciones de coordenadas. Traslación, rotación y escalación son transformaciones afines. Transforman líneas paralelas en líneas paralelas y posiciones de coordenadas finitas en posiciones finitas.




Glosario Unidad II
Stack
Una pila(stack en inglés) es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO(del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. Esta estructura se aplica en multitud de ocasiones en el área de informáticadebido a su simplicidad y ordenación implícita de la propia estructura.

Para el manejo de los datos se cuenta con dos operaciones básicas: apilar (push), que coloca un objeto en la pila, y su operación inversa, retirar(o desapilar, pop), que retira el último elemento apilado.

En cada momento sólo se tiene acceso a la parte superior de la pila, es decir, al último objeto apilado (denominado TOS, Top of Stack en inglés). La operación retirar permite la obtención de este elemento, que es retirado de la pila permitiendo el acceso al siguiente (apilado con anterioridad), que pasa a ser el nuevo TOS.

Por analogía con objetos cotidianos, una operación apilar equivaldría a colocar un plato sobre una pila de platos, y una operación retirar a retirarlo.
Coordenadas Geometricas
son un instrumento usado para describir un punto en el espacio proyectivo. Puden usarse cmo un sistema alternativo de coordenadas para trabajar en el espacio euclideo.
Cubo en 2D
Código

#include <gl\glut.h>
void display(void)
{       
  typedef GLfloat point2[2];
  point2 vertice[8] = {
  {100.0,100.0},    //vector 0
  {300.0,100.0},    //vector 1
  {300.0,300.0},    //vector 2
  {100.0,300.0},    //vector 3
  {400.0,200.0},    //vector 4
  {400.0,400.0},    //vector 5
  {200.0,400.0},    //vector 6
  {200.0,200.0}};   //vector 7
 
  glColor3f(0.0,1.0,0.0);
  gluOrtho2D(0.0, 500.0, 0.0, 500.0);
  glClear(GL_COLOR_BUFFER_BIT);
  glBegin(GL_LINES);
  glVertex2fv(vertice[0]);
  glVertex2fv(vertice[1]);
  glVertex2fv(vertice[1]);
  glVertex2fv(vertice[2]);
  glVertex2fv(vertice[2]);
  glVertex2fv(vertice[3]);
  glVertex2fv(vertice[3]);
  glVertex2fv(vertice[0]);
  glVertex2fv(vertice[1]);
  glVertex2fv(vertice[4]);
  glVertex2fv(vertice[2]);
  glVertex2fv(vertice[5]);
  glVertex2fv(vertice[5]);
  glVertex2fv(vertice[4]);
  glVertex2fv(vertice[5]);
  glVertex2fv(vertice[6]);
  glVertex2fv(vertice[6]);
  glVertex2fv(vertice[3]);
  glVertex2fv(vertice[0]);
  glVertex2fv(vertice[7]);
  glVertex2fv(vertice[4]);
  glVertex2fv(vertice[7]);
  glVertex2fv(vertice[6]);
  glVertex2fv(vertice[7]);
  glEnd();
        glFlush();
}
void main(int argc, char** argv)
{
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
        glutInitWindowSize(512, 512);
        glutCreateWindow(" Proyecto Cubo 2D");
        glutDisplayFunc(display);
 
        glutMainLoop();      
}


Salida


martes, 21 de febrero de 2012

Algoritmo DDA para generación de líneas

El algoritmo de Bresenham es un algoritmo creado para dibujar rectas en los dispositivos de gráficos rasterizados, como por ejemplo un monitor de ordenador, que determina qué pixeles se rellenarán, en función de la inclinación del ángulo de la recta a dibujar.

Es un algoritmo preciso para la generación de lineas de ratreo que convierte mediante rastreo las líneas al utilizar solo cálculos incrementales con enteros que se pueden adaptar para desplegar circunferencias y curvas. Los ejes verticales muestran las posiciones de rastreo y los ejes horizontales identifican columnas de pixel.
El algoritmo sería el siguiente:
Si 0<|m|<1
  *Se capturan los extremos de la línea y se almacena el extremo izquierdo en (x0,y0).
  *Se carga (x0,y0) en el bufer de estructura (se traza el primer punto)
  *Se calculan las constantes Δx,Δy, 2Δy y 2Δy-Δx y se obtiene el valor inicial para el
    parametro de decisión p0=2Δy-Δx.
  Para j=0 mientras j<Δx
  *En cada xk a lo largo de la línea, que inicia en k=0 se efectúa la prueba siguiente:
      Si pk<0
          *Trazamos (xk+1,yk).
          *Asignamos pk+1= pk+2Δy.
      Sino
          *Trazamos (xk+1,yk+1).
          *Asignamos pk+1= pk+2Δy-2Δx.
  Fin Para
Si |m|>1
   *Recorremos la dirección en pasos unitarios y calculamos los valores sucesivos   
     de x que se aproximen más a la trayectoria de la línea.

Algoritmo de Bresenham para trazar circunferencias
Una circunferencia se define como un conjunto de puntos que se encuentran, en su totalidad, a una distancia determinada r de una posicion central.
Es posible reducir el cálculo al considerar la simetría de las circunferencias, la forma de la circunferencia es similar entre cuadrantes y simetrica entre octantes.
Para aplicar el método del punto medio, definimos una función de circunferencia como:
pk = fcircunferencia(x,y)= x2 + y2 − r2
fcircunferencia(x,y)<0 si (x,y) está dentro de la frontera de la circunferencia.
fcircunferencia(x,y)=0 si (x,y) está en la frontera de la circunferencia.
fcircunferencia(x,y)>0 si (x,y) está fuera de la frontera de la circunferencia.
Los parámetros de decisión sucesivos se obtienen al utilizar cálculos incrementales.
El algoritmo será el siguiente:
 *Se capturan el radio r y el centro de la circunferencia (xc, yc).
 *Se obtiene el primer punto de la circunferencia centrada en origen (xc, yc) como (0, r).
 *Se cacula el valor incial del parametro de decisión como p0=5/4 - r.
 Para k=0 hasta x>=y incrementa k
  Si pk < 0
       *Siguiente punto de la circunferencia con centro (0,0) es (xk+1, yk).
       *pk+1=pk+2xk+1+1.
    Sino
        *Siguiente punto de la circunferencia con centro (0,0) es (xk+1, yk-1).
       *pk+1=pk+2xk+1+1-2yk+1.
    //Donde 2xk+1=2xk+2  y  2yk+1=2yk-2

 *Se determinan los puntos de simetría para los otros siete octantes.
 *Se mueve cada posición del pixel calculada (x,y) a la trayectoria circular centrada en (xc, yc)
   y trazamos los valores de las coordenadas: x=x+xc y y=y+yc.
 Fin Para


Fuentes:

martes, 14 de febrero de 2012

Tipos de Fractales
Algoritmos de Escape
Una característica especial del fractal Mandelbrot (y de otros tipos afines) es la de generar un infinito conjunto de fractales, ya que por cada punto se puede generar un fractal tipo Julia, que no es sino una ligera modificación en la fórmula del Mandelbrot.
En este mismo sitio, la sección Mundo Mandelbrot está íntegramente dedicada a este legendario fractal.

Funciones iteradas
El sistema de funciones iteradas (IFS) es un método creado por M. Barnsley, basándose en el principio de autosemejanza. En un fractal IFS siempre se puede encontrar una parte de la figura que guarda una relación de semejanza con la figura completa. Esa relación es a menudo muy difícil de apreciar, pero en el caso del helecho es bastante clara: cualquier hoja es una réplica exacta de la figura completa.

Lindenmayer y Sierpinski
La idea es sencilla y antigua. Un triángulo en el que se aloja otro, uniendo los puntos medios de cada uno de sus lados. Esto se repite con todos y cada uno de los triángulos formados que tengan la misma orientación que el original, y así sucesivamente.
El triángulo de Sierpinski es uno de los pocos fractales que se puede dibujar con exactitud sin ayuda de un ordenador, siguiendo las instrucciones anteriores. En área fractal, el artículo Koch y Sierpinski detalla más aspectos de este tipo de curvas.


Órbitas caóticas
Cuando estudiamos en el colegio el sistema solar nos dijeron que los planetas describían órbitas elípticas. Como en todo, eso es cierto sólo hasta cierto nivel. El atractor de Lorenz se consigue llevando esa incertidumbre hasta el extremo. Básicamente está formada por un hilo infinitamente largo que va describiendo una trayectoria tridimensional acercándose y alejándose de dos puntos de atracción.
Este tipo de modelo nació con un estudio sobre órbitas caóticas desarrollado por E. Lorenz en 1.963.
Aleatorios y celulares
Ciertas categorías de fractal no encajan del todo dentro de las características que hemos descrito en algún otro sitio. Estructuras como el plasma o las imágenes de difusión (figura 5) dependen en cierta medida del azar, por lo cual son únicas e irrepetibles.
Los autómatas celulares están en el otro extremo. Funcionan con sencillas reglas que colorean zonas a partir del color de las adyacentes. Pese a que en principio pueda parecer que las imágenes conseguidas con este método vayan a ser sencillas y simétricas, no tiene por qué ser así.
Estocastico
Modelo matemático en el que la ley de probabilidad que da la evolución de un sistema depende del tiempo.
Cuando por lo menos una variable es tomada como un dato al azar las relaciones entre variables se toman por medio de funciones probabilísticas, sirven por lo general para realizar grandes series de muestreos, quitan mucho tiempo en el computador son muy utilizados en investigaciones científicas.


Fuentes:

martes, 7 de febrero de 2012


Geometría Fractal

¿Que es fractal?
Es una figura geometrica, estas se dan por medio de representaciones geometricas ya que son semejantes, por asi decirlo consecutivas.
Los fractales tienen un numero infinito de vértices.

¿Que es geometria fractal?
Un fractal es un ente geométrico el cual en su desarrollo espacial se va reproduciendo a si mismo cada vez a una escala menor.Es decir en un serie consecutiva de la mitad, de la mitad, de la mitad, etc.


Mencione 5  imagenes  fractales mas conocidas
fractal de Sierpinski
fractal de koch

fractal de cantor
fractal de mandelbrot
fractal de juliá

viernes, 3 de febrero de 2012

Ensayo
Introducción a la graficación por computadora
La graficación hecha por computadora es el arte o la ciencia que produce imágenes graficas con la ayuda de la computadora. Al pasar del tiempo las aplicaciones que podemos desarrollar gracias a la graficación han sido evolucionando continuamente para da una mejor calidad a las imágenes.
El primer avance en la computación gráfica fue la utilización del tubo de rayos catódicos. Hay dos acercamientos a la gráfica 2d: vector y gráficos ráster. Los gráficos de tramas o ráster (llamados comúnmente Mapa de bits) es una rejilla bidimensional uniforme de pixeles. Cada pixel tiene un valor específico como por ejemplo brillo, transparencia en color o una combinación de tales valores. Una imagen de trama tiene una resolución finita de un número específico de filas y columnas. Las demostraciones de computadora estándares muestran una imagen de trama de resoluciones como 1280 (columnas) x 1024 (filas) pixeles. Hoy uno a menudo combina la trama y lo gráficos vectorizados en formatos de archivo compuestos (pdf, swf, svg).
Después llegaron  los gráficos en 3D en donde la computadora almacena la posición de puntos, líneas y típicas caras (para construir un polígono) en un Espacio de tres dimensiones. Las gráficas de hoy no son el producto de colecciones masivas de polígonos en formas reconocibles, ellas también resultan de técnicas en el empleo de Shading(Sombreadores), texturing(Texturizado o mapeado) y la rasterización (En referencia a mapas de bits).
El proceso de sombreado o shading (en el contexto de los gráficos realizada por computadora) implica la simulación de computadora (o más exactamente; el cálculo) como las caras de un polígono se comportarán cuando es iluminado por una fuente de la luz virtual.
Estas son algunas de las formas en las que se puede apreciar la evolución de la graficación, algunas de estas formas no solo fueron utilizadas o mejor dicho no han sido utilizadas solamente para áreas profesionales o de trabajo también se emplean ara el área del entretenimiento.
El primer videojuego de la historia fue creado en 1952, con el nombre OXO. Fue producto de la tesis doctoral de Alexander Sandy Douglas en la Universidad de Cambridge para demostrar la interactividad entre computadoras y seres humanos.
En 1995 se presentó la primera película de larga duración con gráficos y animaciones 3D por computadora. La película realizada por Pixar fue llamada
Toy Story. La película no presentó mejoras revolucionarias, sin embargo solo por ser una película de larga duración tuvo un gran impacto en la manera en que la gente percibía los gráficos por computadora .Para 1995 las audiencias de todo el mundo estaban acostumbradas a vera sombrosos gráficos en películas, pero hubo otra revolución de gráficos, que comenzó ese año.
Sony lanzó al mercado mundial su consola de juegos Playstation 
(X). Hasta entonces las llamadas consolas de videojuegos solamente podían manejar gráficos 2D, pero el Playstation  contenía un chip (además del CPU) de 3D acelerado por hardware capaz de dibujar 360,000 polígonos por segundo.
Para la película Spider-Man  3 de 2007 Sony Pictures Imageworks  (SPI) usó el software Autodesk Maya para la animación en 3D, el modelado, texturizado y combinación de movimientos de los personajes y efectos visuales aproximadamente en 80% de las tomas realizadas por el estudio. Se usó el sistema de efectos visuales Autodesk Flame para hacer cambios en el rostro delos personajes y para integrar tomas reales de ellos en ambientes generados totalmente por computadora. El uso de ese software también fue decisivo para crear la secuencia extremadamente compleja de Sandman y la sustancia simbiótica de Venom.

Aplicaciones de Gráficos por computadora
Gracias a las aplicaciones de gráficos hechos por computadora podemos tener imágenes o proyecciones de alta calidad no solo en el área profesional sino en el área de entretenimiento algunas de  ellas son: gráficos 2D, gráficos 3D y sombreado; que nos han permitido disfrutar  una mejor calidad visual.
Los sistemas gráficos están compuestos por dispositivos que nos permiten tener todo lo ya mencionado los cuales son: Procesador, memoria, framebuffer. Al igual que los dispositivos de entrada que permiten al usuario del computador introducir datos, comandos y programas en el CPU. Los dispositivos de entrada mas comunes son: teclado, ratón, micrófono, scanner, cámara digital, webcam, lector de código de barras, lápices ópticos, palancas de mando y tarjetas perforadas, son los dispositivos mas utilizados para la graficación.
También se utilizan los dispositivos de salida y entre los más comunes para este método son: pantalla monitor (los puntos a tratar en un monitor son la resolución, refresco de pantalla y tamaño de punto) y la impresora.

Dispositivos de hardware y software
Es un poco obvio que los  dispositivos de hardware y software formen una parte muy importante en la realización de los gráficos ya que nos ayudan a desplegar o mostrar los gráficos diseñados por computadora, estos son una parte importante de la graficación, ya que esta se ha apoyado de estas herramientas para mostrar o desplegar los modelos creados con ayuda de un software para gráficos.
Uno de los dispositivos más empleados para el despliegue de gráficos es el monitor, que primeramente fueron creados a base de tubos de rayos catódicos que actualmente está siendo desplazada por la tecnología de cuarzo líquido en estos dispositivos.
También se emplea el Antialiasing (en 3D) que prácticamente es la misma idea para líneas en 2D que consiste en tratar de evitar que las aristas proyectadas presenten "escalones". El efecto de aliasing es incluso peor en animaciones, dado que mínimos cambios de posición pueden determinar efectos de aliasing totalmente distintos, lo que produce la sensación de que "algo se mueve" en los bordes de los objetos.
Un método primitivo consiste en procesar la imagen final ya proyectada y examinar los pixels, suavizando las diferencias entre pixels adyacentes. Es simple y rápido.
En un método mucho más costoso se tomarán varias muestras (el concepto de "sub-pixels" otra vez) para calcular el color final del pixel.
Y por último otro método que puede resultar más costoso consiste en hacer "vibrar" la imagen (mediante cambios mínimos de posición del punto de vista) y realizar una media entre las imágenes calculadas. Es probablemente el que da mejores resultados, pero también el más costoso.
Formatos gráficos de almacenamiento
Los formatos gráficos son archivos en los cuales se guarda información que conforma a una imagen. Cada formato es independiente, ya que las posibilidades que ofrece cada formato con respecto a la gama de colores, a la compatibilidad, a la rapidez de carga etc., merece ser explicada para determinar cual de ellos es el mas adecuado para la tarea que estamos realizando.
Con respecto a la estructura, la mayoría posee un header que indica al programa que le soliciten las características de la imagen que almacenan, cada formato tiene una organización propia de su estructura.
Los formatos graficos deben proporcionar una buena calidad en la imagen, así como mayor velocidad al cargar la imagen; existen  dos tipos de formatos los vectoriales y los de mapa de bits que se conocen como rasterizados.
Cuando una imagen esta rasterizada se identifica por que aparece una rejilla rectangular de pixeles o puntos de color y en los vectoriales representan una imagen a través del uso de objetos geométricos como curvas y polígonos.
Algunos formatos de mapa de bits pueden ser: ART, BMP Windows Bitmap, DRW draw, GIF,JPG entre otras.
Al contrario que un bitmap, una imagen vectorial puede ser escalada, rotada o deformada, sin que ello perjudique la calidad de la imagen. Algunos formatos vectoriales son: AI, Adobe Illustrator Document, CDR CorelDRAW, CGM Computer Graphics Metafile, entre otros.
BMP: Los archivos de mapas de bits se componen de direcciones asociadas a códigos  de color, uno para cada cuadro en una matriz de pixeles.
A lo largo de este ensayo se ha mencionado de donde surgió y como ha avanzado la graficación hecha por computadora, sus aplicaciones los dispositivos de hardware  software que se utilizan para mejorar las imágenes  proyecciones y se sabe que estos avances seguirán evolucionando conforme valla pasando el tiempo y será muy interesante ver cada uno de ellos ya que lo que se ha dado a conocer hasta hoy han sido cosas impresionantes.