★ CODING ★ AMSTRAD SEMANAL ★ GRÁFICOS TRIDIMENSIONALES ★![]() |
| Gráficos Tridimensionales |
Las posibilidades gráficas de los Amstrad CPC, aunque muy elevadas, sólo alcanzan hasta las dos dimensiones, ahora con esta serie de artículos, las tres dimensiones son posibles. Como habremos podido observar, actualmente muchos programas realizados para Amstrad, incorporan rutinas encargadas de manejar gráficos tridimensionales, con lo cual se consiguen efectos espectaculares. Este tratamiento espacial de las cosas es realmente bonito pero a la vez algo complicado, ya que nos encontramos ante una pantalla de monitor en la cual únicamente son tangibles dos coordenadas. En la vida cotidiana nuestros ojos están acostumbrados a trabajar en el espacio tridimensional por lo que a parte de ver la altura y anchura de los objetos, podemos distinguir además su profundidad. Ahora bien, las cosas se complican algo más cuando nos encontramos trabajando sobre un plano, es decir una hoja de papel o la pantalla de nuestro monitor, ya que en este caso únicamente disponemos de dos coordenadas. Aquí es donde reside la complejidad de la representación tridimensional, ya que deberemos imaginarnos una tercera coordenada donde en realidad no existe. Intentaremos explicar en estos artículos dedicados a este tema, los mecanismos básicos que nos permitirán realizar representaciones tridimensionales en el plano, en este caso sobre la pantalla de nuestro Amstrad. Cuando nos encontramos trabajando sobre un espacio de dos dimensiones, es decir un plano, cada punto de dicho espacio, se puede identificar mediante dos coordenadas que definen su posición, éstas se denominan habitualmente “X” e “Y”. La primera de ellas, “X”, nos dará la distancia horizontal respecto al origen, mientras que “Y” nos informará de la posición vertical. De esta forma un punto lo podremos representar mediante estos dos valores de la siguiente forma: (X,Y) Si nos fijamos en la figura 1, podemos observar que el punto A, se encuentra a una distancia horizontal de +3, respecto al origen “O”, mientras que el recorrido vertical respecto a ese mismo origen es de + 1. Siguiendo la regla anterior para la representación de un punto, éste se podrá identificar como: ( + 3, + 1) o (3,1) El convenio de signos adoptado usualmente, nos dice que todos aquellos valores de “X” que se encuentren a la derecha del origen serán positivos, y aquéllos que estén a su izquierda serán negativos. Siguiendo la misma norma, diremos que todos los valores de “Y” por encima del origen serán positivos y los que se encuentren por debajo de éste serán negativos. De esta forma el punto B se identificará mediante: (-2,-1) Vamos a pasar ahora a la representación en tres dimensiones, para ello nos hará falta una tercera coordenada, que llamaremos “Z”, la cual nos indicará la distancia o profundidad a la que se encuentra un punto respecto al origen. La representación tridimensional no es nada complicada, realmente se reduce a comprender tres ejes: ancho, largo y alto. En este caso la forma en que podremos indentificar cada uno de los puntos del espacio, será: (X,Y,Z)
(1,2-1) Vamos a dejar un poco la teoría y vayamos a la práctica, para ello vamos a ver cuáles son los comandos que posee el Amstrad que nos van a permitir imprimir puntos y rectas así como elegir el origen deseado en pantalla. Tenemos a nuestra disposición una serie de comandos que nos permitirán dibujar en modo gráficos, unos nos permitirán dibujar puntos como “PLOT” y “PLOTR”, otros nos imprimirán rectas, como “DRAW” y “DRAWR”, y aún existen otros que permitirán poner el cursor gráfico en un lugar determinado, como son “MOVE”, “MOVER” y “ORIGIN”. De toda esta serie de instrucciones gráficas, nosotros únicamente utilizaremos tres de ellos para realizar las figuras en tres dimensiones, que serán: ORIGIN X,Y . . . Para situar el origen de coor. En el primer programa de demostración, nos hemos propuesto unir dos puntos en el plano, es decir en un espacio de dos dimensiones, para ello, debemos definir en primer lugar cuáles son los puntos que se desean unir. Seguidamente moveremos el cursor gráfico hasta situarlo encima del primer punto (el que se encuentra más cerca del origen), y a continuación trazaremos una recta mediante el comando “DRAW”, cuyos parámetros “X” e “Y” serán los correspondientes al segundo punto, es decir el que se encuentra más alejado del origen. Una vez visto la forma en que se pueden unir mediante rectas dos puntos cualquiera en un plano, vamos a pasar ahora al espacio tridimensional, realizando la misma operación. Como hemos dicho anteriormente, cada punto en tres dimensiones vendrá definido mediante tres coordenadas que nos darán la situación de dicho punto en el espacio. Ahora bien, como sabemos los comandos gráficos que nos proporciona el Basic del Amstrad, únicamente nos permiten introducir dos de ellos, por lo que tendremos que buscar un método que nos permita eliminar la coordenada sobrante, sin que por ello se pierda la definición tridimensional. Supongamos que tenemos dos puntos en el espacio, cuyas coordenadas serán: Punto 1 (X1,Y1,Z1) Según las leyes del álgebra, nosotros podemos dividir cada una de las coordenadas de un punto por un valor constante, sin que por ello se pierda la definición de dicho punto, de esta forma podemos dividir cada una de ellas por la coordenada “Z”, de esta forma nos quedará: Punto 1 (X1/Z1,Y1/Z1,Z1/Z1) = (X1/Z1,Y1/Z1,1) Como se puede observar cada uno de los puntos anteriores nos ha quedado definido por dos valores, y un tercer valor que será siempre constante e igual a uno para cualquier punto del espacio. De esta forma podemos rechazar tranquilamente dicho valor constante, ya que no nos va a ofrecer ninguna información sobre un punto en concreto, puesto que para todos los puntos va a ser el mismo. Así pues, únicamente nos quedan dos coordenadas representativas de cada punto en el espacio, por lo que ya estamos en condiciones de aplicar los comandos gráficos que nos permite utilizar nuestro Basic. Por supuesto estos parámetros representativos de cada punto pueden ser multiplicados o divididos por un valor constante, sin que por ello varíe la situación de un punto con respecto al otro, teniendo en cuenta eso sí, que dicho parámetro deberá ser el mismo para cada uno de los puntos que deseemos imprimir. A este parámetro que generalmente será multiplicativo, se le puede denominar factor de corrección, y servirá para visualizar más nítidamente las distintas rectas en el espacio. Además de éste, se suele utilizar otro factor de corrección sobre la coordenada “Z”, para evitar que al efectuar las divisiones nos produzca un error de división por cero, por lo que esta coordenada nos quedará: Z = Z + D Donde “D” debe ser el mismo para cualquier punto del espacio que se desee imprimir. Un ejemplo de esto lo podréis encontrar en el segundo programa de demostración que hemos preparado, en el cual se podrá ver la diferencia que existe entre unas líneas y otras, variando el valor de la coordenada “Z” en uno cualquiera de los puntos. Vamos a ver por último cómo deberemos definir las figuras en el espacio, puesto que en próximos artículos veremos cómo girar figuras en el espacio, para lo cual primero se deberán definir. En primer lugar deberemos elegir un origen de coordenadas, el cual corresponderá al centro de la figura que sea desea definir, esto deberá ser de esta forma si más tarde deseamos rotar dicha figura sobre su centro, en caso contrario podemos situar dicho origen en el lugar que se desee. Como en este caso lo que haremos es girar la figura sobre ella misma, su centro deberá corresponder al origen de coordenadas elegido. Una vez hecho esto, deberemos calcular las coordenadas de cada uno de los puntos que definen la figura, eligiendo unas unidades lo más sencillas posibles, para que esta operación no se complique demasiado. Debemos tener siempre en cuenta que a cada uno de los puntos de la figura le corresponderán siempre tres coordenadas, una para cada eje que define el espacio. Un ejemplo del cálculo de coordenadas, podemos observarlo en la figura 3, donde podemos ver un cubo centrado sobre el origen de coordenadas, tomando como unidad el valor 1. Con todo lo visto hasta el momento, creo que nos podemos hacer una idea suficientemente clara de lo que representa trabajar en un espacio de tres dimensiones, así pues en el próximo artículo, veremos varios ejemplos de figuras en el espacio, y cuáles serán las fórmulas que debemos aplicar para producir rotaciones de las mismas sobre cada uno de los ejes de coordenadas.
|