พิกัดของจุดในสามมิติ
ในระบบพิกัดที่พบเห็นได้ทั่วไป เราสามารถนิยามจุด p ใด ๆ ในสามมิติ ได้ด้วยจำนวนจริง x,y,z ในรูปแบบ (x,y,z)
นอกจากการเขียนในรูปแบบ (x,y,z) แล้ว เรายังสามารถเขียนในรูปแบบของเวกเตอร์ได้ด้วย โดยใช้เวกเตอร์หนึ่ง ๆ ที่มีขนาดเท่ากับ 3 และมีค่าเป็นจำนวนจริง 3 ตัว ซึ่งเราสามารถเขียนในรูปแบบxyz
การแปลงของจุดในสามมิติ
การแปลงเบื้องต้นในสามมิติ มีอยู่ 5 รูปแบบได้แก่
- Translation (การเลื่อนที่)
- Scaling (การหด/ขยาย)
- Rotation (การหมุน)
- Shear (การเอียง)
- Reflection (การสะท้อน)
ในการแปลงรูปแบบ Scaling, Rotation, Shear, Reflection สามารถใช้ Matrix ในการแปลงได้โดยตรงผ่านการคูณ Matrix เข้ากับเวกเตอร์ของจุดนั้น ๆ
Translation
การเลื่อนที่ของจุดในสามมิติสามารถทำได้โดยง่ายด้วยการบวกเวกเตอร์ของจุดนั้น ๆ ด้วยเวกเตอร์ของขนาดของการเลื่อนที่ ซึ่งเราสามารถเขียนในรูปแบบของ Matrix ได้ดังนี้
xyz+txtytz=x′y′z′
Scaling, Rotation, Shear และ Reflection
ในการแปลงรูปแบบ Scaling, Rotation, Shear และ Reflection สามารถใช้ Matrix ในการแปลงได้โดยตรงผ่านการคูณ Matrix เข้ากับเวกเตอร์ของจุดนั้น ๆ ซึ่งเราสามารถเขียนในรูปแบบของ Matrix ได้ดังนี้
adgbehcfixyz=x′y′z′
การรวมการแปลง
เนื่องจากการคูณ Matrix สามารถรวมกันก่อนแล้วนำมาคูณกับจุดที่ต้องการแปลงได้ในคราวเดียว ดังนั้นเราสามารถเขียนในรูปแบบของ Matrix ได้ เช่น
A เป็นเวกเตอร์ที่ใช้ในการหมุนจุดในสามมิติ โดยที่ θ คือมุมที่ต้องการหมุนรอบแกน z
A=cosθsinθ0−sinθcosθ0001
B เป็นเวกเตอร์ที่ใช้ในการขยายจุดในสามมิติ โดยที่ 2 คือขนาดของการขยาย
B=200020002
เราสามารถคูณ Matrix 2 อันนี้เข้าด้วยกันได้เพื่อให้ได้ Matrix ที่ใช้ในการหมุนและขยายจุดในสามมิติได้
A×B=2cosθ2sinθ0−2sinθ2cosθ0002
แล้วสามารถนำมาคูณกับเวกเตอร์ของจุดที่ต้องการแปลงได้
2cosθ2sinθ0−2sinθ2cosθ0002xyz=2xcosθ−2ysinθ2xsinθ+2ycosθ2z
แต่หากในกรณีที่มีการเลื่อนเข้ามาด้วยจะทำให้คำนวณได้ลำบากอย่างมาก
$C เป็นเวกเตอร์ที่ใช้ในการเลื่อนจุดในสามมิติ
C=345
เมื่อทำการขยายขนาดด้วย B จากนั้นเลื่อนที่ด้วย C แล้ว หลังจากนั้นจึงหมุนด้วย A จะได้
((B×xyz)+C)×A=(2x2y2z+345)×cosθsinθ0−sinθcosθ0001=2x+32y+42z+5×cosθsinθ0−sinθcosθ0001=(2x+3)cosθ−(2y+4)sinθ(2x+3)sinθ+(2y+4)cosθ2z+5
ซึ่งสังเกตได้ว่าในการแปลงจุดหนึ่งครั้งต้องทำงานหลายขั้นตอน และหากมีการเปลี่ยนแปลงจำนวนขั้นตอน จะทำให้การคำนวณเพิ่มขึ้นอย่างมาก
การใช้ Matrix ในการแปลง
ใน Linear Algebra เราสามารถใช้ Matrix ขนาด 4×4 มาช่วยในการแปลงจุดในสามมิติได้ โดยที่ Matrix นี้จะมีรูปแบบดังนี้
sr(1,1)sr(2,1)sr(3,1)0sr(1,2)sr(2,2)sr(3,2)0sr(1,3)sr(2,3)sr(3,3)0txtytz1
สังเกตว่าหลังจากการเพิ่มมิติให้กับ Matrix แล้วจะทำให้สามารถเขียนการเลื่อนที่ไว้ในมิติที่เพิ่มเข้ามาใหม่ได้ จึงทำให้สามารถทำการแปลงจุดในสามมิติได้โดยง่ายขึ้น โดยแทนที่จะเลื่อนที่ด้วยการบวกสามารถใช้การคูณ Matrix ได้โดยตรง เช่น
Tv เป็นเวกเตอร์ที่ใช้ในการเลื่อนที่ และ Tm เป็น Matrix ที่ใช้ในการเลื่อนที่จุดในสามมิติที่มีความหมายเทียบเท่ากับ Tv
TvTv+xyz=345=345+xyz=x+3y+4z+5
จากการคำนวณด้านบน สามารถเขียนในรูปแบบของ Matrix ได้ดังนี้
TmTm×xyz1=1000010000103451=1000010000103451×xyz1=x+3y+4z+51
ซึ่งสามารถเทียบเคียงกันได้
สรุป
เราสามารถเขียน Matrix ในรูปแบบของการแปลงจุดในสามมิติได้ดังนี้
sr(1,1)sr(2,1)sr(3,1)0sr(1,2)sr(2,2)sr(3,2)0sr(1,3)sr(2,3)sr(3,3)0txtytz1×xyz1=sr(1,1)x+sr(1,2)y+sr(1,3)z+txsr(2,1)x+sr(2,2)y+sr(2,3)z+tysr(3,1)x+sr(3,2)y+sr(3,3)z+tz1
เพื่อให้ง่ายต่อการคำนวณและลดจำนวนขั้นตอนที่ต้องทำในการแปลงจุดในสามมิติ