Você precisa determinar a matriz de transformação de coordenadas de espaço em mosaico em coordenadas de espaço de tela e, em seguida, calcular a matriz inversa para isso, que quando aplicada às coordenadas de espaço em tela as transforma em coordenadas de espaço em mosaico.
A propósito: seu deslocamento está realmente apontando para um local que seria (0,0, 1,0) em qualquer sistema de coordenadas sãs, mas isso não é um grande problema, apenas algo a ser lembrado. Isso significa que o deslocamento da origem do sistema de coordenadas transformado está em (Offset + 32, 0).
Caso específico
O que você está basicamente fazendo para transformar as coordenadas do espaço do bloco (a, b) em coordenadas do espaço da tela (x, y) é executá-lo através da seguinte matriz de transformação:
Definições: um e b para o ladrilho (0, 0) estão no intervalo [0.0, 1.0) com (0.0, 0.0), sendo o canto superior, (1.0, 1.0) no canto inferior, (0.0, 1.0) o canto esquerdo e (1,0, 0,0) o canto direito no espaço da tela.
Nós estendemos as definições de coordenadas por uma terceira coordenada constante (é sempre exatamente 1) para poder incorporar a tradução na matriz.
Agora você pode criar a matriz inversa para essa transformação. A fórmula básica é:
... com C sendo a matriz de co-factores para uma .
No seu caso, o determinante | Um | é sempre 1024, independentemente do deslocamento, portanto, a matriz inversa é:
Exemplo de cálculo
Agora, para seus dados de exemplo ...
Coloque seu número para deslocamento na fórmula e você obtém:
Multiplicar (105, 100, 1) (as coordenadas da tela) com a matriz permite:
Como a terceira coordenada é sempre 1, não precisamos calculá-la. Arredonde para o número inteiro mais próximo e você obtém (1, 4) as coordenadas do espaço do bloco, conforme o esperado.
Matrizes de projeção dimétrica geral
Se você tiver uma perspectiva como essa, com cada ladrilho com 2 w de largura (64 no exemplo, então w = 32) e 2 h de altura (32 no exemplo, então h = 16) e o deslocamento do ponto de origem no espaço de tela ser f x e f y para o eixo horizontal e vertical, respectivamente, (192 e 0 no exemplo), as matrizes de olhar como se segue.
Espaço em bloco para o espaço da tela
Espaço da tela para o espaço lado a lado