CODINGAMSTRAD SEMANAL ★ GRáFICOS TRIDIMENSIONALES (III) ★

Gráficos Tridimensionales (III)
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Vamos a ver hoy el último de la serie de los artículos dedicados al tratamiento de los gráficos espaciales, en el que se expone la forma de producir los giros sobre cualquiera de los tres ejes.

En anteriores capítulos veíamos cómo se podía trabajar en el espacio tridimensional, utilizando únicamente dos coordenadas en función de la tercera, lo cual nos permitía utilizar los comandos gráficos del Amstrad, que únicamente son capaces de trabajar con dos parámetros, aparte del modo de escritura y el color. Así pues, sabiendo cómo se puede realizar una figura en el espacio, vamos a intentar hacerla girar sobre cada uno de sus ejes, para ello deberemos conocer cuáles son las ecuaciones de giro para un punto cualquiera. Supongamos que nosotros queremos rotar 45 grados una figura sobre el eje X, para ello deberemos calcular las coordenadas que corresponden a cada uno de los puntos de dicha figura, una vez efectuada la rotación. Estas posiciones de cada uno de los puntos será lo que deberemos calcular a través de las ecuaciones de giro. Como se puede imaginar, cada uno de los tres giros posibles sobre los ejes existentes, va a tener sus propias ecuaciones de giro. Supongamos que las coordenadas de un punto sean las siguientes: X,Y,Z y queremos girar dicho punto un ángulo de 45 grados alrededor del eje X. Las coordenadas de dicho punto, una vez rotado, serían:

PX = X
PY = COS(45) * Y—SIN(45) * Z
PY = SIN(45)*Y + COS(45)*Z

de esta forma las coordenadas del nuevo punto serán: PX,PY,PZ

Las rotaciones sobre cualquiera de los restantes ejes se efectuarían de una forma similar, como indicamos a continuación:

Rotación sobre el eje «Y».

PX = COS(A) * X—SIN(A) * Z PY = Y
PZ = SIN(A) * X + COS(A) * Z

Rotación sobre el eje ‘Z'.

PX = COS(A) * X—SIN(A) * Y PZ = SIN(A) * X + COS(A) * Y

Donde A sería al ángulo que se desea girar dicho punto, y sin y eos serían respectivamente el seno y el coseno. Así pues, una vez conocidas las ecuaciones que nos permiten girar cualquier punto en el espacio, no debe suponer ningún problema efectuar la rotación de cualquier figura en el espacio. De esta forma, para poder rotar una figura que contenga, por ejemplo, ocho puntos, deberemos calcular las nuevas coordenadas de cada uno de ellos una vez girados, y a continuación proceder a imprimir la figura. Vamos a ver ahora cómo funciona el programa Basic que hemos preparado, el cual nos permitirá la rotación de figuras tridimensionales sobre cualquiera de los tres ejes. En primer lugar, debemos decir que dicho programa necesitará los datos generados por la aplicación que aparecía en el artículo anterior y se encargaba de confeccionar nuestras figuras a partir de los datos que se iban introduciendo.

Una vez terminada la introducción de datos, éstos se almacenaban en cinta o disco, para su posterior utilización. Pues bien, esos mismos datos serán los que necesitará el programa que aparece al final de este artículo para proceder a la rotación de la figura deseada. De esta forma, una vez ejecutado nuestro programa, lo primero que hará, será pedirnos el nombre con que se han almacenado los datos de alguna de las figuras que se habían creado con el programa que presentábamos en el capítulo anterior. Por tanto, en este momento deberemos colocar, en la unidad de discos, un disco conteniendo el fichero de una figura creada anteriormente, de lo contrario aparecerá el error de fichero no encontrado. Una vez realizada esta operación, ya podremos empezar a trabajar haciendo rotar la figura sobre cada uno de los ejes o bien aumentar o disminuir su tamaño. Para realizar todas estas operaciones disponemos de una serie de teclas que son las que se indican a continuación:

F4 ............. Giro izquierda eje Y
F6 ............. Giro derecha eje Y
F1 ............. Giro izquierda eje Z
F3 ............. Giro derecha eje Z
F5 ............. Giro arriba eje X
F2 ............. Giro abajo eje X
'.'............ Disminuir figura
F0 ............. Aumentar figura

Además de esto, dentro del programa hay una serie de variables que nos permitirán hacer algunas modificaciones sobre el programa original. Cada vez que nosotros realicemos un giro, la figura rotará 45 grados alrededor del eje elegido, ahora bien, este valor se encuentra almacenado en la variable G, por lo que cambiando el valor de la misma, podremos hacer girar la figura el ángulo deseado. Otra de las cosas que nos podría interesar cambiar, es el centro de la figura, el cual está colocado en la posición 320,200. Para cambiar dicho centro, únicamente bastará con colocar los nuevos valores en el comando Origen que se encuentra en la línea 40 del listado Basic.

También podremos alterar las dimensiones de la figura actuando sobre la variable Fact, esto también se podría hacer alterando otra variable, D, aunque esta última se utiliza también para variar la profundidad del dibujo. Aunque el programa en un principio trabaje en modo 1 de pantalla, este modo podemos alterarlo colocando en valor correspondiente en él la línea 40 del programa. La impresión de la figura se realiza con la tinta 1, aunque ésta se podrá realizar en otras, e incluso con tintas distintas para cada una de las rectas, para ello únicamente deberemos incluir el parámetro necesario en el comando Draw que aparece en la línea 230 del programa Basic. Como se puede comprobar, la velocidad de ejecución del programa Basic, es algo lenta, ello es debido a la gran cantidad de cálculos que se deben realizar para producir cada una de las rotaciones de la figura. Ahora bien, este programa es únicamente una demostración y a la vez nos proporciona el camino que debemos seguir para conseguir la rotación de figuras tridimensionales. Por ello, para poder conseguir una velocidad de ejecución más rápida, deberemos en cada caso preparar programas distintos. Un método que nos proporcionaría una mayor velocidad de ejecución, sería tomar cada una de las coordenadas calculadas, y almacenarlas en variables matriciales. Esto nos evitaría ejecutar los cálculos de dichas coordenadas en el momento que se desee imprimir la figura. Otra de las cosas que debemos tener muy en cuenta es que cada vez que se efectúa una rotación, se produce un borrado de pantalla, lo cual significa que únicamente podemos tener esa figura en pantalla. Para solucionar este problema, deberemos imprimir la figura en pantalla, y en el momento de borrarla en lugar de producir un CLS, se deberá imprimir esa misma figura, pero en XOR, colocando el modo de impresión adecuado en comando draw. Así pues, si, por ejemplo, deseamos imprimir una lina horizontal, haríamos:

MOVE 100,100:DRAW 0,100,,3

Para borrar esa misma línea sin tener que borrar totalmente la pantalla, podríamos hacer:

MOVE 100,100:DRAW 0,100,,3

De esta forma, además de la figura rotando en la pantalla podríamos tener cualquier dibujo o texto en el resto de la pantalla. Otra opción que podemos incluir en nuestros programas para no tener que borrar toda la pantalla, podría ser la definición de una ventana en la cual se puede imprimir la figura que se desee rotar. De esta forma, para borrar la figura podremos realizar un CLS de dicha ventana, por lo que el resto de la pantalla quedará intacta.

AS

★ PUBLISHERS: Hobby Press , Amstrad Semanal
★ YEAR: 1987
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: AMSTRAD SEMANAL 1987
★ AUTOR: Alberto SUÑER
 



Page précédente : Gráficos Tridimensionales (II)
★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
 » Graficos  Tridimensionales  3    (Amstrad  Semanal)    SPANISH    LISTINGDATE: 2026-07-05
DL: 9
TYPE: PDF
SiZE: 321Ko
NOTE: Supplied by archive.org ; 1 page/PDFlib v1.6

Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.732-desktop/c
Page créée en 513 millisecondes et consultée 42 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.