Debe determinar la matriz de transformación de las coordenadas del espacio de mosaico a las coordenadas del espacio de pantalla, luego calcular la matriz inversa para esto, que cuando se aplica a las coordenadas del espacio de pantalla las transforma a las del espacio de mosaico.
Por cierto: su desplazamiento en realidad apunta a un lugar que sería (0.0, 1.0) en cualquier sistema de coordenadas sensato, pero ese no es un gran problema, solo algo a tener en cuenta. Esto significa que el desplazamiento del origen de su sistema de coordenadas transformado está en (Offset + 32, 0).
Caso específico
Lo que básicamente está haciendo para transformar las coordenadas del espacio de mosaico (a, b) en coordenadas del espacio de pantalla (x, y) es ejecutarlo a través de la siguiente matriz de transformación:
Definiciones: un y b para la baldosa (0, 0) están en el intervalo [0,0, 1,0) con (0.0, 0.0) que es la esquina superior, (1.0, 1.0) de la esquina inferior, (0.0, 1.0) la esquina izquierda y (1.0, 0.0) la esquina derecha en el espacio de la pantalla.
Extendemos las definiciones de coordenadas por una tercera coordenada constante (siempre es exactamente 1) para poder incorporar la traducción en la matriz.
Ahora puede crear la matriz inversa para esta transformación. La fórmula básica es:
... con C siendo la matriz de cofactores para A .
En su caso, el determinante | A | siempre es 1024, sin importar el desplazamiento, por lo que la matriz inversa es:
Ejemplo de cálculo
Ahora, para sus datos de ejemplo ...
Ponga su número de compensación en la fórmula, y obtendrá:
Multiplicar (105, 100, 1) (las coordenadas de la pantalla) con la matriz te da:
Como la tercera coordenada siempre es 1, no tenemos que calcularla. Redondea hacia abajo al número entero más cercano, y obtienes (1, 4) como tus coordenadas de espacio de mosaico, como se esperaba.
Matrices de proyección dimetrica general
Si tiene una perspectiva como esta con cada mosaico de 2 w de ancho (64 en el ejemplo, entonces w = 32) y 2 h de altura (32 en el ejemplo, entonces h = 16), y el desplazamiento del punto de origen en el espacio de pantalla siendo f x y f y para el eje horizontal y vertical respectivamente (192 y 0 en el ejemplo), las matrices se ven a continuación.
Espacio de mosaico a espacio de pantalla
Espacio de pantalla a espacio de mosaico