Bạn cần xác định ma trận biến đổi từ tọa độ không gian ô vuông sang tọa độ không gian màn hình, sau đó tính ma trận nghịch đảo cho ma trận này, khi áp dụng cho tọa độ không gian màn hình sẽ chuyển đổi chúng thành tọa độ không gian ô.
Nhân tiện: Phần bù của bạn thực sự đang chỉ đến một vị trí (0,0, 1,0) trong bất kỳ hệ tọa độ lành mạnh nào, nhưng đó không phải là vấn đề lớn, chỉ là điều cần lưu ý. Điều này có nghĩa là phần bù của gốc tọa độ của hệ tọa độ được chuyển đổi của bạn là (Offset + 32, 0).
Trường hợp cụ thể
Những gì bạn về cơ bản đang làm để chuyển đổi tọa độ không gian gạch (a, b) thành tọa độ không gian màn hình (x, y) là để chạy nó thông qua ma trận biến đổi sau:
Định nghĩa: a và b cho ô (0, 0) nằm trong phạm vi [0,0, 1,0) với (0,0, 0,0) là góc trên, (1,0, 1,0) góc dưới, (0,0, 1,0) góc bên trái và (1.0, 0.0) góc phải trong không gian màn hình.
Chúng tôi mở rộng các định nghĩa tọa độ bằng tọa độ thứ ba không đổi (luôn luôn chính xác là 1) để có thể kết hợp bản dịch vào ma trận.
Bây giờ bạn có thể tạo ma trận nghịch đảo cho phép chuyển đổi này. Công thức cơ bản là:
... với C là ma trận của các đồng yếu tố cho một .
Trong trường hợp của bạn, yếu tố quyết định | Một | luôn luôn là 1024, bất kể giá trị bù, vì vậy ma trận nghịch đảo là:
Tính toán ví dụ
Bây giờ, cho dữ liệu ví dụ của bạn ...
Đặt số của bạn để bù vào công thức và bạn nhận được:
Nhân (105, 100, 1) (tọa độ màn hình) với ma trận giúp bạn:
Vì tọa độ thứ ba luôn là 1, chúng ta không phải tính toán nó. Làm tròn xuống đến số nguyên gần nhất và bạn nhận được (1, 4) làm tọa độ không gian ô của mình, như mong đợi.
Ma trận chiếu tổng quát
Nếu bạn có một phối cảnh như thế này với mỗi ô có chiều rộng 2 w (ví dụ 64, thì w = 32) và 2 h chiều cao (ví dụ 32, vì vậy h = 16) và phần bù của điểm gốc trong không gian màn hình lần lượt là f x và f y cho trục ngang và trục dọc (ví dụ 192 và 0), các ma trận trông như sau.
Không gian gạch để không gian màn hình
Không gian màn hình để không gian gạch