Вам необходимо определить матрицу преобразования из координат пространства листов в координаты пространства экрана, а затем рассчитать для этого обратную матрицу , которая при применении к координатам пространства экрана преобразует их в координаты пространства листов.
Кстати, ваше смещение фактически указывает на место, которое будет (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 .
В вашем случае определитель | A | всегда 1024, независимо от смещения, поэтому обратная матрица:
Пример расчета
Теперь для вашего примера данных ...
Поместите свой номер для смещения в формулу, и вы получите:
Умножение (105, 100, 1) (экранные координаты) на матрицу дает вам:
Поскольку третья координата всегда равна 1, нам не нужно ее вычислять. Округление до ближайшего целого числа, и вы получите (1, 4) в качестве ваших координат пространства плитки, как и ожидалось.
Общие диметрические проекционные матрицы
Если у вас есть такая перспектива с каждой плиткой, имеющей ширину 2 w (в нашем примере 64, то w = 32) и высоту 2 h (в этом примере 32, h = 16), а также смещение исходной точки в пространстве экрана, равном f x и f y для горизонтальной и вертикальной оси соответственно (192 и 0 в примере), матрицы выглядят следующим образом.
Плитка пространство для экрана
Пространство экрана для пространства плитки