. . . . . .หลังจากที่เราผมร่วงกันแล้ว หมายถึง ศึกษาสูตรที่ให้ไปนะครับ ฮ่า ฮ่า โอเช.....ที่นี้เราจะนำสูตรมาใช้งานกันละ ให้นึกไว้ว่า มีจุดอยู่จุดหนึ่งในระบบสามมิติ ประกอบไปด้วยค่า X, Y และ Z มันลอยไป ลอยมา แล้วมันไปอยู่ที่ตรงนั้น ได้ยังงัย อืม.........ถ้าจินตนาการจุดเป็นรูปอื่นเพราะยังค้างอยู่ละก็ เหอ เหอ...... ให้มองไปข้างหน้า เห็นหนูมั๊ย ?? หมายถึง mouse นะครับ ให้จับ mouse เลื่อนไปซ้ายที ขวาที หน้าที หลังที ยกขึ้น ยกลง และก็ให้สมมุตว่า mouse เป็น จุดนั้น เราเลื่อนไปทางซ้าย-ขวา ก็คือแกน X ไปทางหน้าหลังก็ Z ยกขึ้นยกลง ก็เป็นแกน Y เลื่อนซ้ายคือ -X เลื่อนไปทางขวาคือ +X เลื่อนไปข้าหน้าคือ +Z เลื่อนถอยหลังคือ -Z ยกขึ้นคือ +Y ยกลงคือ -Y มันอยู่ไกลจากสายตาเราเป็นระยะค่าหนึ่ง ให้สายตาเราเป็นจุดศูนย์กลางของระบบสามมิติมีค่า XYZ เท่ากับ 0.0 ทั้งหมด แต่ค่า XYZ ของ mouse จะเป็นอีกค่าหนึ่ง สังเกตุได้ว่า mouse อยู่ทางด้านขวาก็แสดงว่าอยู่แกน X มีค่าบวก แต่มันอยู่ต่ำกว่าระดับสายตาเรา ให้คิดจาก ระดับสายตามองไปตรงๆ นะครับ ก็แสดงว่ามันอยู่แกน Y มีค่าลบ และมันอยู่ข้างหน้าเราก็มีคือแกน Z มีค่าบวก คราวนี้จับ mouse ขึ้นมาหมุนไปทางซ้าย, ขวา หมุน mouse ตรงๆนะครับ แล้วเลื่อน mouse ผ่านสายตาช้าๆ ไปด้านซ้าย, ขวา, บน, ล่าง, หน้า, หลัง ให้นึกถึงแกน X, Y และ Z ไปด้วยนะครับจากระดับสายตาของเรา หงาย mouse !!! จะเห็นลูกยาง นั่นละคือจุดในระบบสามมิติครับ ฮ่า ฮ่า ฮ่า ต่อไปสังเกตุอีกนิดจะเห็นจุดขาวๆทั้งสี่มุมของ mouse จากลูกล้อ ไม่ขาวก็ได้ครับ แต่เป็นจุดฐาน mouse ครับ มันจะอยู่ห่างจากลูกยางตรงกลางไปอีกค่าหนึ่งใช่ไหม ??? ให้ถือว่าจุดขาวๆ นั้นมีค่า XYZ ค่าจาก ลูกยางตรงกลางอีกค่าหนึ่งและ ลูกยางตรงกลางห่างจากสายตาของเราอีกค่าหนึ่งครับ ต่อไปหมุน mouse สังเกตุจุดขาวๆ จะเปลี่ยนตำแหน่ง แต่ลูกยางที่อยู่ตรงกลางยังอยู่ที่เดิม ลองหมุนดูนะครับ สังเกตุได้อีกว่า จุดสีขาวทั้งสี่มุม ยังคงมีระยะห่างจากลูกยางตรงกลางระยะเท่าเดิม แต่แกน XYZ ของลูกยางมีการเปลี่ยนแปลงค่า คือมีการหมุนแกน XYZ ของลูกยาง ทีนี้ตำแหน่งจุดขาวๆ ทั้งสี่มุมได้มาจากค่า XYZ รวมกับตำแหน่ง XYZ ของลูกยางครับ แต่ลูกยางตรงกลางผ่านกระบวนการหมุนหรือ rotate และก็เคลื่อนย้าย translate ซึ่งคำนวณได้ในระบบ matrix เพราะฉนั้น ลูกยางตรงกลางจึงเป็นจุดกลางของวัตถุในระบบสามมิติที่มี จุดขาวๆ อยู่ในตำแหน่ง XYZ ของลูกยางอีกทีครับ ให้จุดขาวๆเป็น Vector หนึ่งที่มีค่า X, Y และ Z ให้ลูกยางตรงกลางเป็น matrix เราก็นำ Vector มาคูณกับ matrix ก็จะได้ตำแหน่ง XYZ ใหม่จากจุดกลางของวัตถุครับ ฮ่า ฮ่า ฮ่า งงแหงๆ ดูข้างล่างครับ
. . . . . .จากรูปเป็นขั้นตอนการคำนวณค่า XYZ ในระบบสามมิติ เราจะต้องคำนวณจาก ระบบ matrix นะครับ ครั้งแรกเราต้องสร้าง Identity matrix ก่อน จากนั้นก็มาเข้าสูตร scale, rotate
และก็ Translate matrix แล้วก็มาคูณกับ Vector ก็จะได้ค่า XYZ จบ !!! หึหึหึ.... บางคน งงแล้ว งงอีก มันไปทำอะไรฟะ scale, rotate, translate ม่ายรู้เรื่อง....??? เอาละ งงตอนนี้
ไม่เป็นไรเพราะเราต้องนำ matrix ไปผ่าน function scale, rotate และ translate จะได้ matrix ในระบบสามมิติอย่างแท้จริง จากนั้นเราก็นำค่า XYZ ไปคูณกับ matrix อีกครั้งหนึ่ง ถึงจะได้
ค่า XYZ ที่ถูกต้องในระบบสามมิติครับ เดี๋ยวเรามาดูสูตรการ scale matrix, rotate matrix, translate matrix และก็นำ vector มาคูณกับ matrix ครับ source code หาดูได้ที่แฟ้ม ti3d.cpp ในชุดพัฒนา Swasdee 6.0 SDK ครับ