ทำไม 4×4 เมทริกซ์ที่ใช้ในการแปลงสิ่งต่าง ๆ ในแบบ 3 มิติ?

คำถาม
แน่นอน 4×4 เมทริกซ์มีประโยชน์มากในการแปลงสิ่งต่าง ๆ ในรูปแบบ 3 มิติ! คุณสามารถเพิ่มเวกเตอร์ในกรณีของการแปล.

เหตุผลเบื้องหลังการใช้ 4×4 เมทริกซ์เพื่อแปลงสิ่งต่าง ๆ ในรูปแบบ 3 มิติ

เหตุผลที่ใช้เมทริกซ์นั้นเกิดจากการมีวิธีที่เหมือนกันในการจัดการกับการแปลงที่รวมกันต่างกัน.

ตัวอย่างเช่น, การหมุนมักจะทำได้โดยใช้เมทริกซ์, ดังนั้นเพื่อจัดการกับการเปลี่ยนแปลงหลายๆ อย่าง (การหมุน/การแปล/การปรับขนาด/การฉายภาพ…ฯลฯ) อย่างเท่าเทียมกัน, คุณต้องเข้ารหัสพวกมันในเมทริกซ์.

ดี, พูดทางเทคนิคมากขึ้น; การแปลงคือการแมปจุด/เวกเตอร์กับจุด/เวกเตอร์อื่น.

p` = T(p); 

โดยที่ p` คือจุดที่ถูกเปลี่ยนและ T(พี) คือฟังก์ชันการแปลง.

เนื่องจากเราไม่ได้ใช้เมทริกซ์ เราจึงจำเป็นต้องทำเช่นนี้เพื่อรวมการแปลงหลายรายการเข้าด้วยกัน:

p1= ต(พี);

พีสุดท้าย = ม(หน้า 1);

เมทริกซ์ไม่เพียงแต่สามารถรวมการแปลงหลายประเภทให้เป็นเมทริกซ์เดียวได้ (เช่น. ละเลย, เชิงเส้น, ฉายภาพ).

การใช้เมทริกซ์ทำให้เรามีโอกาสรวมห่วงโซ่ของการแปลงเข้าด้วยกัน จากนั้นจึงคูณพวกมันเป็นชุด. สิ่งนี้ช่วยเราประหยัดเวลาได้มากโดย GPU (ขอบคุณ @ChristianRau สำหรับการชี้ให้เห็น).

ตู่สุดท้าย = ต * Active Directory * NS; // แปลภาษาหมุนโครงการ

พีสุดท้าย = ตสุดท้าย*พี;

เป็นการดีที่จะชี้ให้เห็นว่า GPU และแม้แต่ CPU บางตัวได้รับการปรับให้เหมาะสมสำหรับการทำงานของเวกเตอร์; CPU ที่ใช้ SIMD และ GPU เป็นโปรเซสเซอร์แบบขนานที่ขับเคลื่อนด้วยข้อมูลตามการออกแบบ, ดังนั้นการใช้เมทริกซ์จึงเหมาะอย่างยิ่งกับการเร่งด้วยฮาร์ดแวร์ (จริงๆ แล้ว, GPU ได้รับการออกแบบเพื่อให้เหมาะกับการทำงานของเมทริกซ์/เวกเตอร์).


เครดิต:

https://gamedev.stackexchange.com/questions/72044/why-do-we-use-4×4-เมทริกซ์เพื่อแปลงสิ่งต่าง ๆ ในรูปแบบ 3 มิติ?answertab=active#tab-top

ทิ้งคำตอบไว้