คุณจำเป็นต้องกำหนดเมทริกซ์การแปลงจากพิกัดช่องว่างของกระเบื้องเป็นพิกัดพื้นที่หน้าจอจากนั้นคำนวณเมทริกซ์ผกผันสำหรับสิ่งนี้
โดยวิธีการ: ออฟเซ็ตของคุณชี้ไปยังสถานที่ซึ่งจะเป็น (0.0, 1.0) ในระบบพิกัดใด ๆ ก็ตาม แต่นั่นไม่ใช่ปัญหาใหญ่ แต่เป็นสิ่งที่ต้องคำนึงถึง ซึ่งหมายความว่าออฟเซ็ตของจุดกำเนิดของระบบพิกัดที่แปลงของคุณอยู่ที่ (Offset + 32, 0)
กรณีเฉพาะ
สิ่งที่คุณทำโดยทั่วไปสำหรับการแปลง tile-space (a, b) พิกัดเป็น screen-space (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 hในความสูง (32 ในตัวอย่างดังนั้นh = 16) และออฟเซ็ตของจุดกำเนิด ในพื้นที่หน้าจอเป็น f xและ f yสำหรับแกนนอนและแนวตั้งตามลำดับ (ในตัวอย่าง 192 และ 0) เมทริกซ์จะมีลักษณะดังนี้
พื้นที่ไทล์ไปยังพื้นที่หน้าจอ
พื้นที่หน้าจอเพื่อพื้นที่กระเบื้อง