¡Buen día navegantes!
Viendo que despierta interés el tema de la programación con Monkey, he decidido publicar en el blog algunas de las traducciones que estoy haciendo para nuestro propio aprendizaje. Los artículos que iré publicando no seguirán un orden especifico, ya que no es mi intención crear un curso. Sin embargo, creo que os servirán de referencia para aclarar diversos temas de programación con esta herramienta.
Matrices de dibujo en Monkey
Términos utilizados:
Matrix – Un conjunto de números (organizados en filas y columnas, como una tabla o un array bidimensional)
Stack – Una pila de objetos de la que sólo se pueden agregar o quitar objetos de la parte superior.
DrawingMatrix – La matriz que influye de dibujo de gráficos.
Translate – Trasladar
IdentityMatrix – Una matriz que no altera de dibujo de gráficos.
Pop – Eliminar un objeto de la parte superior de la pila.
Push – Agregar un objeto a la parte superior de la pila.
Al dibujar gráficos con Monkey, todos los dibujos se ve influenciados por “DrawingMatrix“.
DrawingMatrix consta de 6 números:
2 para sesgar gráficos
2 para escalado de gráficos
2 para la traducción de gráficos
La “IdentityMatrix” tendrá este aspecto (1,0,0,1,0,0)
Tiene una escala de 1,1 y los otros números son cero, por lo que los gráficos se dibujan en la pantalla sin cambios.
Escala
Para dibujar un cuadrado el doble de su tamaño normal se podría hacer esto en Monkey:
Scale (2,2)DrawRect (0,0,50,50)
El comando “Scale” altera los números de la escala en la matriz de dibujo.
Lo que resultaria en que el rectángulo sería generado en las coordenadas 0,0 de la pantalla con un tamaño de 100 x 100 píxeles, debido al comando de escalado.
Estos cambios son acumulativos, por lo que si haces la misma cosa dos veces, añades los números que introduciste a “DrawingMatrix“.
Traslación
Hacer esto:
Translate (20,20)
Translate (20,20)
Es lo mismo que:
Translate (40,40)
La traslación también se ve afectada por la escala, por lo que dibujar un rectángulo en las coordenadas 20,30 y establecer la escala en (2,2) resultaría en el rectángulo que aparece a 40,60.
Por lo tanto, para dibujar un rectángulo en coordenadas de pantalla: 30,30
SetMatrix (1,0,0,1,0,0) ‘restablece la IdentityMatrix
Translate (30,30)
DrawRect (0,0,10,10)
Giro
Para girar una imagen desde su centro tiene que asegurarse de que tiene sus puntos de anclaje en el centro.
Por ejemplo:
Local img: Image = LoadImage (“img.png”)
img.SetHandle (64,64)
Si quieres rotar los gráficos que están a punto de aparecer, lo que tienes que usar es el comando “Rotate”, esto altera el sesgo y la escala de la matriz para producir un efecto de rotación.
Tu le proporcionas un número al comando “Rotate” para decirle a Monkey cuántos grados deseas girar los gráficos.
Por ejemplo:
Rotate (90)
Primero tienes que trasladar la matriz a la posición donde quieres que aparezca la imagen antes de utilizar el comando “Rotate”. Por lo tanto, para dibujar una imagen en las coordenadas 100 ,100 con un ángulo de 45 grados. Has de hacer algo así:
SetMatrix (1,0,0,1,0,0) ‘ restablecemos la matriz
Translate (100,100)
Rotate (45)
DrawImage (miImagen, 0,0)
También podemos utilizar la pila de matrices.
El comando pushMatrix() hace una copia de DrawingMatrix y la coloca en la parte superior de la pila.
La matriz “DrawingMatrix” sin embargo, no sufre cambios. EL uso de la pila es útil para cuando se desea guardar una matriz y utilizarla más tarde.
Cuando estés listo para usarla utiliza el comando popMatrix() para sustituir DrawingMatrix por la Matriz que tengas en la parte superior de la pila.
En ese momento, la matriz que tuvieras en la parte superior de la pila también se elimina de la pila.
Más historias
Diana Digital: Sin gastos de envío.
Diana Cave Adventure: Primera tirada terminada.
Diana Cave Adventure: Iniciado el periodo de reserva.