เพื่อให้เป็นรูปธรรมมากขึ้นฉันกำลังทำงานกับแอพ iOS และมีโครงสร้างCATransform3D
(โดยทั่วไปคืออาร์เรย์แปลง 4x4)
เป็นไปได้ไหมที่จะอนุมาน "การดำเนินการ" ที่แตกต่างกันของเมทริกซ์นี้? สิ่งต่าง ๆ เช่นการหมุน, สเกล, ฯลฯ มันหมายถึงอะไร?
เพื่อให้เป็นรูปธรรมมากขึ้นฉันกำลังทำงานกับแอพ iOS และมีโครงสร้างCATransform3D
(โดยทั่วไปคืออาร์เรย์แปลง 4x4)
เป็นไปได้ไหมที่จะอนุมาน "การดำเนินการ" ที่แตกต่างกันของเมทริกซ์นี้? สิ่งต่าง ๆ เช่นการหมุน, สเกล, ฯลฯ มันหมายถึงอะไร?
คำตอบ:
คุณสามารถแยกเมทริกซ์ลงในการแปลงพื้นฐาน: การแปลการปรับสเกลและการหมุน รับเมทริกซ์นี้:
ตอนนี้คุณมีขนาดที่คุณสามารถกำจัดมันใช้ย่อยเมทริกซ์ที่สอดคล้องกับโดยการคูณเมทริกซ์ที่มีการผกผันของขนาดการ รับ
ดังนั้น ( ):
นี่คือเมทริกซ์การหมุนรอบสุดท้าย คุณสามารถย่อยสลายมันได้หลายวิธี มันจะออกยาว แต่คุณสามารถค้นหาเน่าเฟะเมทริกซ์หมุน
วิธีนี้ให้ค่าที่เทียบเท่าในรูปแบบของการแปลการปรับขนาดและการหมุน (เมทริกซ์ดั้งเดิมอาจเป็นผลมาจากการแปลงรูปแบบอื่น ๆ ) มันอาจมีปัญหากับความแม่นยำจุดลอยตัวกับมุมการหมุนถ้าคุณใช้มุมที่ย่อยสลายต่อไปข้อผิดพลาดในการปัดเศษอาจสะสมในการคำนวณ คุณไม่ควรใช้มันหากคุณไม่ได้สร้างเมทริกซ์ด้วยตัวเอง
ถ้าคุณเป็นคนที่สร้างเมทริกซ์และต้องการการสลายตัวเพื่อที่จะสามารถแก้ไขและแสดงการแปลสเกลและการหมุนทีละตัวและเป็นอิสระทำความสะอาดทำไมต้องเก็บส่วนประกอบของ ,และในชั้นเรียนการแปลงแต่ละรายการเป็นพาหะ (อาจเป็นควอเทอร์เนียนสำหรับการหมุน) เมื่อคุณต้องการเมทริกซ์การแปลงให้สร้างเมทริกจากส่วนประกอบเหล่านี้ (คุณสามารถแคชเมทริกซ์จนกว่าจะมีการเปลี่ยนแปลงบางส่วน)