แปลงลำดับการคูณเมทริกซ์


21

ฉันประสบปัญหาในการพยายามหาลำดับการคูณที่ถูกต้องสำหรับเมทริกซ์การแปลงสุดท้าย ฉันมักจะได้รับการเคลื่อนไหวที่แปลกหรือเรขาคณิตที่บิดเบี้ยว รุ่นปัจจุบันของฉันมีคำอธิบายด้านล่าง:

สำหรับโหนดเดียวลำดับการคูณของฉันคือ:

L = S * R * T

ที่ไหน

L = เมทริกการแปลงโลคัล

S = เมทริกซ์สเกลท้องถิ่น

R = เมทริกซ์การหมุนโลคัล

T = เมทริกซ์แปลโลคัล

สำหรับการเปลี่ยนแปลงโลกของโหนด:

W = PW * L

ที่ไหน

W = เมทริกซ์การแปลงโลก

PW = เมทริกซ์การแปลงโลกผู้ปกครอง

L = เมทริกการแปลงโลคัลที่คำนวณข้างต้น

เมื่อแสดงผลสำหรับแต่ละโหนดฉันคำนวณเมทริกซ์:

MV = Inv (C) * NW

ที่ไหน

MV = เมทริกซ์การแปลงมุมมองโมเดลสำหรับโหนดเฉพาะ

Inv (C) = เมทริกซ์การแปลงกล้องผกผัน

NW = เมทริกซ์การแปลงโลกของโหนดที่คำนวณข้างต้น

ในที่สุดฉันก็มีการเปลี่ยนแปลงที่รกร้าง:

TVP = PRP * MV * VP

ที่ไหน

TVP = ตำแหน่งจุดสุดยอดที่ถูกแปลงสุดท้าย

PRP = เมทริกซ์เปอร์สเปคทีฟ

MV = เมทริกซ์การแปลงโลกของโหนดที่คำนวณข้างต้น

VP = ตำแหน่งจุดสุดยอดที่ไม่เปลี่ยนรูปแบบ

ด้วยรุ่นปัจจุบันโหนดลูกที่มีการหมุนในท้องถิ่นหมุนแปลก ๆ เมื่อเปลี่ยนกล้อง ฉันผิดไปจากลำดับการคูณที่ไหน

คำตอบ:


37

การรวมกันของคำสั่งใด ๆS*R*Tให้เมทริกซ์การแปลงที่ถูกต้อง อย่างไรก็ตามมันเป็นเรื่องธรรมดาที่จะทำการปรับขนาดวัตถุก่อนจากนั้นหมุนมันแล้วแปลมัน:

L = T * R * S

หากคุณไม่ทำตามลำดับการปรับขนาดที่ไม่สม่ำเสมอจะได้รับผลกระทบจากการหมุนครั้งก่อนทำให้วัตถุของคุณดูเบ้ และการหมุนจะได้รับผลกระทบจากการแปลทำให้ตำแหน่งสุดท้ายของวัตถุของคุณแตกต่างอย่างมากจากสิ่งที่คุณค่าของการแปลจะทำให้คุณคาดหวัง


คุณช่วยอธิบายเรื่องนี้อีกหน่อยได้ไหม? จากสิ่งที่ฉันคุ้นเคยการหมุนไม่สามารถได้รับผลกระทบจากการแปลเนื่องจากความแตกต่างในการวางแนวระหว่างสองเฟรมโดยไม่ขึ้นกับตำแหน่ง แต่การแปลอาจได้รับผลกระทบจากการหมุนที่เกิดขึ้นก่อนหน้านี้เนื่องจากจะแปลในแกนหมุนที่กำหนดใหม่ ใน L = TRS การแปลจะเกิดขึ้นก่อนดังนั้นจึงไม่ได้รับผลกระทบจากเวกเตอร์ใหม่ที่เกิดจากการหมุน
ผู้ใช้ -2147482637

4
ความสับสนเกิดขึ้นจากความจริงที่ว่าคุณกำลังพูดถึงการเปลี่ยนแปลงในท้องถิ่น (ที่เฟรมยังคงเชื่อมโยงกับวัตถุ) ในขณะที่การเปลี่ยนแปลงที่อธิบายไว้ที่นี่เกิดขึ้นในอวกาศโลก (ที่มีกรอบอ้างอิงคงที่เพียงโลกเดียว) แนวคิดวิธีการมองสิ่งต่าง ๆ ของคุณนั้นถูกต้องและเทียบเท่ากับการใช้การแปลงในลำดับย้อนกลับ
sam hocevar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.