ฉันจะย้อนกลับผลกระทบของเมทริกซ์การแปลงได้อย่างไร


14

ฉันเพิ่งทำงานเกมโดยใช้ OpenGL และ C ++ ผ่าน GLFW

ในเกมฉันมีเรือบินพร้อมป้อมปืนติดตั้งอยู่ เรือเหาะเคลื่อนที่ไปรอบ ๆ ในพิกัดอวกาศโลกและป้อมปราการ 'ตาม' มัน

ป้อมปืนมีพื้นที่ประสานงานเป็นของตัวเองสำหรับทิศทางการมอง / เล็ง โดยทั่วไปเมื่อป้อมปืนมุ่งไปในทิศทาง(0,0,1)มันจะมุ่งขนานไปกับทิศทางการเคลื่อนที่ของเรือบิน

เพื่อให้เป้าหมายอวกาศของป้อมปืนฉันมีเมทริกซ์ที่ใช้พิกัดอวกาศของโลกและเปลี่ยนสิ่งเหล่านี้เป็นพิกัดอวกาศของป้อมปืน

เมื่อป้อมยิงฉันต้องการให้ลูกกระสุนออกมาในอวกาศโลกมีวิธีที่ดีในการใช้เมทริกซ์การแปลงของฉันเพื่อแปลงพิกัดของป้อมปืนกลับสู่อวกาศโลกหรือไม่?

วิธีทั่วไปมากขึ้นของการถามคำถามที่อาจจะ: ถ้าฉันมีเมทริกซ์Mที่ใช้พิกัดจากพื้นที่ไปยังพื้นที่A Bมีวิธีง่าย ๆ ในการใช้MพิกัดจากBถึงAหรือไม่?

คำตอบ:


19

ตราบใดที่เมทริกซ์Mเป็นตัวผกผัน (ซึ่งโดยทั่วไปจะมียกเว้นกรณีที่คุณกำลังทำบางสิ่งบางอย่างที่ผิดปกติมาก) แล้วคำนวณผกผันเมทริกซ์ของMจะทำให้คุณเมทริกซ์ที่ไม่สิ่งที่คุณต้องการ

นั่นคือถ้าMทำการแปลงบางอย่างให้ทำการแปลงแบบinverse(M)"ตรงกันข้าม"

เมทริกซ์ / เวกเตอร์ไลบรารีส่วนใหญ่มีวิธีการคำนวณอินเวอร์ส


1
คำถามโบนัส (ตามที่คุณดูเหมือนคนที่จะรู้คำตอบ): เมทริกซ์การแปลงร่างใด ๆ ที่ไม่สามารถย้อนกลับได้จะให้ผลลัพธ์ที่น่าสนใจ
user1306322

6
@ user1306322 อาจจะ การฉายภาพลงในมิติที่ต่ำกว่า (เช่นศูนย์ค่า X ทั้งหมด) จะเป็นการแปลงที่ไม่สามารถย้อนกลับได้เนื่องจากคุณกำลังทิ้งค่า มันน่าสนใจในแง่ที่ว่ามีประโยชน์ แต่ไม่ใช่ว่าคุณจะได้ผลลัพธ์ที่ขี้ขลาด "การกลับด้าน" และ "น่าสนใจทางสายตา" เป็นมุมฉาก
congusbongus

@congusbongus ไม่! การฉายภาพจาก 3D เป็น 2D เป็นแฮ็คมาตรฐานเพื่อให้ได้เงาที่ตกลงบนตัวรับระนาบ
imallett

@ user1306322 คุณอาจสนใจMoore - Penrose pseudoinverse
Tobias Kienzler

5

หากเมทริกซ์การแปลงของคุณเป็นเมทริกซ์การหมุนคุณสามารถทำให้ปัญหาง่ายขึ้นโดยใช้ประโยชน์จากข้อเท็จจริงที่ว่าอินเวอร์สของเมทริกซ์การหมุนนั้นเป็นทรานสของเมทริกนั้น

หากเมทริกซ์การแปลงของคุณแสดงถึงการหมุนตามด้วยการแปลให้จัดการส่วนประกอบแยกต่างหาก ค่าผกผันนั้นเทียบเท่ากับการลบการแปลแล้วใช้ทรานสโพสของเมทริกซ์การหมุน


2

ในเมทริกซ์ lib ของคุณอาจมีฟังก์ชันที่เรียกว่า inverse นั่นอาจเป็นสิ่งที่คุณกำลังมองหา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.