domingo, 5 de julio de 2009

Un ejemplo gráfico

No es fácil dar ejemplos de gráficos sin caer en la banalidad o sin recurrir a instrucciones demasiado específicas (y "oscuras"). No obstante, consideramos que para hacer algo más concreto cuanto hemos dicho, es interesante mostrar un programa, escrito para el ordenador Apple II, en el que se dibuja un cuadrado que se mueve rebotando de un extremo a otro de la pantalla. Con respecto a las tres clasificaciones antes aludidas, este ejemplo entra dentro de la tercera categoría, la de gráficos de alta resolución.

El lado L del cuadrado, que queremos hacer desplazar, se solicita como dato a la entrada (línea 180). Puesto que trabajamos en alta resolución, este valor corresponde al número de pixels utilizados por el ordenador para dibujar cada lado del cuadrado. La limitación a 100 se eligió para tener un cuadrado aceptable, considerando que existen 280 * 160 pixels en las coordenadas X e Y de la pantalla del Apple II. La instrucción HGR en la línea 220 llama la "página 1" de los gráficos de alta resolución del ordenador Apple II (en realidad, este ordenador tiene dos páginas gráficas de alta resolución). La instrucción HPLOT es la que traza el cuadrado como sucesión de cuatro segmentos L consecutivos:

HPLOT VERTI CE1 TO VERTICES

TO VERTICES TO VERTICE4 TO VERTICE1

La repetición final sirve para cerrar el cuadrado. El programa elige al azar la coordenada Y del primer vértice del cuadrado, el situado en la parte superior izquierda, mientras que la X inicial es nula. Los incrementos DTX y DTY, para el desplazamiento del cuadrado son elegidos al azar en las líneas 260 y 270. Las instrucciones 310 y 320 sirven para controlar que el cuadrado no salga de la pantalla, sino que rebote; en efecto, apenas toca los bordes, los incrementos DTX y DTY cambian de signo y así se restan en lugar de sumarse, o viceversa.

En las líneas 340 y 410 se elige el color de trazo. Con HCOLOR = 3 el cuadrado se traza en blanco, mientras que con el valor 0, el color es negro como el fondo de la pantalla. En la práctica, el cuadrado se dibuja primero en blanco y luego en negro y ello equivale a borrarlo, pero después de algunos segundos, que son suficientes para que nuestros ojos puedan verlo. Repitiendo este doble trazo se obtiene un efecto visual de movimiento. El pequeño bucle de espera en la línea 390 sirve para hacer más suave el movimiento.

Gráficos por puntos

El tercer tipo de gráficos es el más complejo, pero también el más perfeccionado. En este caso, el programador puede condolar cada ciérneme de imagen individual de ia pantalla (p¡xeL). eligiendo también el color que se le ha de dar.

Los elementos de imagen, también denominados pixels (por la contracción de la denominación inglesa "picture cell") son los puntos unitarios de una imagen digital, Un pixel equivale a un bit: punto luminoso encendido o apagado. Cuantos más pixels existan en una pantalla (su número no depende del software, sino del hardware), tanto más definida y agradable será la imagen obtenida. Actualmente, en los sistemas gráficos profesionales se pueden obtener imágenes de calidad superior a la de una buena fotografía.

Muchos de estos sistemas tienen 1024 * 1024 pixels, que son más de un millón en la pantalla completa y cada uno puede iluminarse con cualquier color de entre 16 millones de colores. No piense que este elevadísimo número de colores es desproporcionado, pues comprende los matices de intensidad de los colores de base.

Los ordenadores personales trabajan con un número de pi-xels inferior (por ejemplo, el Commodore 64 tiene 320x200 = 64000 pixels). Si recordamos que las pantallas más usuales de presentación visual no tienen "memoria" y que su imagen debe ser continuamente "refrescada", ello significa que los pixels de una imagen deben almacenarse en una memoria RAM que funciona como un buffer, y por este motivo, se denomina también memoria de "mapeado" de bits (en inglés, bit-mapping memory). Puesto que cada byte de memoria contiene 8 bits, se puede comprobar que el Commodore 64 utiliza para su página gráfica 8 Kbytes (64000/8=8 K.).

Cuanto mayor sea el número de pixels, tanto más grande debe ser la cantidad de memoria RAM necesaria para almacenar la imagen. Se comprende, pues, por qué los ordenadores personales «o pueden tener muchos pixels. Si además son gráficos en color, junto a cada bit que indica un pixel activo debemos dar también la información de color. Para elegir entre los 8 colores habituales, en la mayor parte de los ordenadores personales son necesarios 3 bits (3 bits permiten seleccionar uno de entre ocho casos posibles). En el caso de una página gráfica de 8 Kbytes se deben añadir, desde el punto de vista teórico, otros 24 Kbytes para el color.

Con frecuencia, para fines prácticos, existen instrucciones que hacen trazar una recta entre dos puntos (un vector) o bien un círculo o una elipse. Otras instrucciones son capaces de rellenar con color una curva cerrada.

sábado, 4 de julio de 2009

Sprítes

Los sprites son un paso adelante en la programación gráfica y permiten obtener resultados muy satisfactorios.  sprite es una pequeña imagen mcd/ü me se asase ese per ts o ¡o pamado; Cada sprite definido en un programa tiene su nombre (como una variable) y puede visualizarse a voluntad, desplazarse y ampliarse en la pantalla con las instrucciones adecuadas. Con la alternancia de sprites diferentes se pueden conseguir efectos de movimiento, y en el caso límite, crear algo muy similar a las imágenes de los videojuegos. Los sprites se definen al comienzo del programa mediante una matriz. Cada cuadrado elemental de la matriz define el estado (activado o apagado) de un punto de la pantalla.

El número máximo de sprites, su tamaño y otras características dependen del ordenador concreto. En general, cada sprite se mueve en un plano propio (como si fueran láminas plásticas superpuestas), cada uno con su prioridad. Así, por ejemplo, los equipos MSX admiten 32 planos más el fondo.

viernes, 3 de julio de 2009

Caracteres semigráficos

Se trata de la programación gráfica más sencilla y más común, pero también la que proporciona los resultados menos atractivos.

Tales como trazos verticales, horizontales, diagonales, cuadrados rellenos, etc. (Fig. 3). Estos caracteres están codificados en ASCII, tal como los alfanuméricos, y se tratan de un modo idéntico. Para trazar un dibujo se hace uso de instrucciones PRINT que imprimen cadenas con estos caracteres.

Muchas veces se trazan dibujos elementales sin utilizar ni siquiera los caracteres semigráficos, ayudados solamente por caracteres simples, tales como el asterisco, el signo menos o el signo de exclamación. Un dibujo de esta clase es realizable por cualquier ordenador personal, y éste es el único caso de compatibilidad completa entre ordenadores.

Si se quisiera dibujar un círculo o una curva más compleja es fácil imaginar que los resultados dejarían bastante que desear.

El primer tipo de gráficos tiene una limitación notable, y es que permite trazar solamente dibujos simples y modulares, en función del conjunto de caracteres semigráficos que posea el ordenador. En compensación, es muy fácil de programar porque, como v dijimos anteriormente, emplea las instrucciones PRINT normales.

jueves, 2 de julio de 2009

Programación de gráficos en los ordenadores person

Todas las versiones del BASIC permiten realizar gráficos, pero las instrucciones disponibles para dicha tarea son muy diferentes de un ordenador a otro. Si quisiéramos convertir un programa de Apple que controle ficheros en un programa para el Commodore encontraríamos, casi con toda seguridad, las correspondencias entre las instrucciones de los dos ordenadores. Dicho de otro modo, el algoritmo concebido para controlar ficheros con el ordenador de Apple sigue siendo el mismo en el caso del Commodore y sólo hay que volverlo a escribir haciendo uso de instrucciones con diferentes sintaxis. Con los gráficos esto es prácticamente imposible. Es precisamente el algoritmo gráfico el que cambia por completo de un ordenador Apple a un Commodore o de un Spec-trum a un IBM PC o a cualquier otro ordenador.

Con un poco de buena voluntad, como hicimos en otros casos, es posible determinar algunos métodos comunes para hacer gráficos. Fundamentalmente existen tres:

• empleo de caracteres semigráficos,

• creación de sprites (objetos móviles),

• control directo de los puntos de pantalla ("pixels").

miércoles, 1 de julio de 2009

El "sketchpad" de Ivan Sutherland

Cualquier alusión histórica a los gráficos nos lleva a muchos años atrás. La necesidad de comunicarse con el ordenador, no solamente en el modo alfanumérico, sino también con la posibilidad de efectuar algoritmos en conjuntos geométricos, se sintió inmediatamente por los primeros usuarios de los ordenadores.

El primer sistema gráfico fue desarrollado en el año 1963 en el prestigioso MIT de Boston por Ivan Sutherland. El sistema, que se llamaba SKETCHPAD (tablero de dibujo), era interactivo, permitía dibujar en la pantalla figuras elementales y estaba provisto del primer lápiz óptico ("light pen"). Mediante mandos situados cerca de la pantalla (Fig. 2) era posible obtener figuras elementales, que luego se desplazaban y se agrupaban en la pantalla con el lápiz óptico.

El sistema Sketchpad fue el primer ejemplo de "trabajo con gráficos" y requería fundamentalmente una pantalla gráfica, un lápiz óptico y el software necesario. Junto a este tipo de hardware se desarrollaron, a partir de los años cincuenta, otros periféricos. El más importante fue el digitalizador, gracias al cual se pueden hacer unos maravillosos y perfectos dibujos constituidos por puntos.