È necessario determinare la matrice di trasformazione dalle coordinate dello spazio delle tessere alle coordinate dello spazio dello schermo, quindi calcolare la matrice inversa per questo, che quando applicata alle coordinate dello spazio dello schermo le trasforma in coordinate dello spazio delle piastrelle.
A proposito: il tuo offset in realtà punta a un posto che sarebbe (0.0, 1.0) in qualsiasi sistema di coordinate sano, ma questo non è un grosso problema, solo qualcosa da tenere a mente. Ciò significa che l'offset dell'origine del sistema di coordinate trasformato è su (Offset + 32, 0).
Caso specifico
Quello che stai fondamentalmente facendo per trasformare le coordinate spazio-piastrella (a, b) in coordinate spazio-schermo (x, y) è eseguirlo attraverso la seguente matrice di trasformazione:
Definizioni: un e b per la piastrella (0, 0) sono nell'intervallo [0.0, 1.0) con (0.0, 0.0) è l'angolo superiore, (1.0, 1.0) in basso, (0.0, 1.0) l'angolo sinistro e (1.0, 0.0) l'angolo destro nello spazio dello schermo.
Estendiamo le definizioni delle coordinate di una terza coordinata costante (è sempre esattamente 1) per essere in grado di incorporare la traduzione nella matrice.
Ora puoi creare la matrice inversa per questa trasformazione. La formula di base è:
... con C è la matrice dei cofattori per A .
Nel tuo caso, il determinante | A | è sempre 1024, indipendentemente dall'offset, quindi la matrice inversa è:
Esempio di calcolo
Ora, per i tuoi dati di esempio ...
Inserisci il tuo numero per l'offset nella formula e otterrai:
Moltiplicando (105, 100, 1) (le coordinate dello schermo) con la matrice ottieni:
Poiché la terza coordinata è sempre 1, non è necessario calcolarla. Arrotonda per difetto al numero intero più vicino e otterrai (1, 4) come coordinate dello spazio delle tessere, come previsto.
Matrici generali di proiezione dimetrica
Se hai una prospettiva come questa con ogni riquadro di 2 w di larghezza (64 nell'esempio, quindi w = 32) e 2 h di altezza (32 nell'esempio, quindi h = 16) e l'offset del punto di origine nello spazio dello schermo essendo f x e f y rispettivamente per l'asse orizzontale e verticale (192 e 0 nell'esempio), le matrici appaiono come segue.
Affianca lo spazio allo spazio dello schermo
Spazio dello schermo per piastrellare lo spazio