Tengo una cuadrícula de tablero de juego que tiene 20 filas de alto y 10 columnas de ancho con el origen (0,0) en la esquina superior izquierda. Tengo un tetrimino en juego, que se compone de cuatro bloques. Tengo la ubicación x, y de cada bloque en relación con el origen de la esquina superior izquierda. También tengo la posición del pivote, el punto alrededor del cual deseo rotar que es relativo al origen de la esquina superior izquierda.
Cada bloque tiene una posición entera en un cuadrado de tablero de juego y, por lo tanto, el pivote tiene una posición fraccional entre bloques, por ejemplo (10.5,10.5)
Mi pregunta es: ¿Qué fórmula puedo usar para rotar cada bloque alrededor del pivote?
Ya he visto preguntas y respuestas similares existentes, pero no pude encontrar una respuesta que pudiera poner a trabajar.
La ayuda sería muy apreciada.
Respuestas:
La lógica de rotación estándar de Tetris se llama Super Rotation System. SRS es adecuado para juegos de Tetris de alto nivel, lo que permite muchas variaciones en patadas en la pared y t-spins.
Existe otra variante común llamada ARS, que se utilizó en los juegos de Tetris de Arika : The Grand Master .
fuente
La fórmula general para girar alrededor del origen es
Por 90 grados se convierte
Entonces, en primer lugar, obtenga las coordenadas del centro de ladrillo relativamente al punto de pivote:
Luego gírelos alrededor del punto de pivote:
Y luego agregue coordenadas de pivote al punto girado:
Pero si necesita rotar por múltiplos de 90 grados, puede almacenar cuatro conjuntos de posiciones de ladrillo para cada orientación y cambiar entre ellos en lugar de rotar realmente.
fuente
Puede rotar todos los anillos cuadrados (a-a-h en 2 posiciones, A-a-P en 4 posiciones, etc.) alrededor de ese bloque de pivote:
fuente
Seguir las fórmulas de rotación 2D estándar en Matemáticas debería ser su truco.
http://en.wikipedia.org/wiki/Rotation_(mathematics)#Matrix_algebra
fuente