Вам потрібно визначити матрицю перетворення від координат простір-простір до координат простору екрана, а потім обчислити для цього зворотну матрицю , яка при застосуванні до координат екрану-простору перетворює їх на плиточно-просторові.
До речі: ваше зміщення насправді вказує на місце, яке було б (0,0, 1,0) у будь-якій розумній системі координат, але це не велика проблема, просто щось, про що слід пам’ятати. Це означає, що зміщення походження вашої трансформованої системи координат знаходиться у (Зсув + 32, 0).
Конкретний випадок
Що ви в основному робите для перетворення координат плитки-простору (a, b) в координати простору екрана (x, y), це запустити його через наступну матрицю перетворення:
Визначення: a і b для плитки (0, 0) знаходяться в діапазоні [0,0, 1,0), причому (0,0, 0,0) є верхнім кутом, (1,0, 1,0) нижнім кутом, (0,0, 1,0) лівим кутом та (1,0, 0,0) правий кут у просторі екрану.
Ми розширюємо визначення координат на постійну третю координату (завжди це точно 1), щоб мати можливість включити переклад у матрицю.
Тепер ви можете створити зворотну матрицю для цього перетворення. Основна формула:
... з C є матрицею кофакторов для A .
У вашому випадку визначальний | А | завжди 1024, незалежно від зміщення, тому обернена матриця:
Приклад розрахунку
Тепер для ваших прикладних даних ...
Введіть у формулу свій номер для компенсації, і ви отримаєте:
Перемноживши (105, 100, 1) (координати екрану) на матрицю, ви отримаєте:
Оскільки третя координата завжди дорівнює 1, нам не потрібно її обчислювати. Закруглете до найближчого цілого числа, і ви отримаєте (1, 4) як ваш координатний простір плитки, як очікувалося.
Загальні диметричні матриці проекції
Якщо у вас є така перспектива, коли кожна плитка має ширину 2 w (64 у прикладі, так w = 32) і 2 год висоти (32 у прикладі, так h = 16), і зміщення точки початку у просторі екрану f x та f y для горизонтальної та вертикальної осі відповідно (192 та 0 у прикладі) матриці виглядають так.
Плитка місця для екрану
Простір екрану, щоб простір плитки