คอมพิวเตอร์กราฟิกส์ใช้ OpenGL
Download
Report
Transcript คอมพิวเตอร์กราฟิกส์ใช้ OpenGL
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL
(Computer Graphics using OpenGL)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
1
บทที่ 6
การแปลงทางเรขาคณิต
(Geometric Transformation)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
2
การแปลงทางเรขาคณิต
เนื่องจากข้ อมูลรูปภาพ หรื อข้ อมูลทางกราฟิ กส์ถกู จัดเก็บไว้ ใน
คอมพิวเตอร์ การเปลี่ยนแปลงวิธีการแสดงภาพเหล่านี ้ออกทาง
จอภาพทาให้ ได้ ภาพในลักษณะที่ต้องการ
การเปลี่ยนแปลงนี ้อาศัยการคานวณทางคณิตศาสตร์ โดยเปลี่ยน
ค่าพารามิเตอร์ ตา่ ง ๆ ที่เกี่ยวข้ องกับการสร้ างภาพเท่านัน้
เรี ยกวิธีการนี ้ว่า การแปลง (Transformation)
การแก้ ไข หรื อเปลี่ยนแปลงภาพกราฟิ กให้ แตกต่างไปจากกราฟิ กเดิม
ทังการย้
้
ายตาแหน่ง (Translation), การย่อ/ขยาย (Scaling), การหมุน
ภาพ (Rotation), การเฉือนภาพ (Shearing) และการสะท้ อนภาพ
(Reflecting) ปฏิบตั ิการเหล่านี ้เรี ยกว่า “การแปลงทางเรขาคณิต”
(Geometric Transformation)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
3
การเลื่อนตาแหน่ ง (Translation)
การเลื่อนตาแหน่ง (Translation) คือการเปลี่ยนตาแหน่งของออปเจ็กต์
ไปในแนวเส้ นตรงจากตาแหน่งหนึง่ ไปอีกตาแหน่งหนึง่
อาจกล่าวได้ วา่ เป็ นเปลี่ยนตาแหน่งจากโคออร์ ดิเนตหนึง่ ไปยัง
โคออร์ ดิเนตอื่นก็ได้
ตาแหน่งออปเจ็กต์ที่เกิดจากการเลื่อนจะต้ องสัมพันธ์กบั ขนาดจอภาพ
ทาให้ ออปเจ็กต์อาจจะอยูใ่ นจอภาพ นอกจอภาพ หรื ออยูใ่ นจอภาพ
บางส่วนก็ได้ ขึ ้นอยูก่ บั ขนาดของจอภาพที่ทาให้ เกิดการขริบภาพ
(clipping)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
4
การเลื่อนตาแหน่ ง (Translation)
การเลื่อนตาแหน่งของจุดและรูปสามเหลี่ยมจากตาแหน่งเดิมไปตาแหน่งใหม่
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
5
การเลื่อนตาแหน่ ง (Translation)
สามารถย้ ายจุดใด ๆ ใน 2 มิติ โดยการบวก ระยะการเลื่อน
(Translation Distance) ในรูปของเวกเตอร์ ในแต่ละแกน (tx และ ty)
จากจุดเดิม (x, y) ไปยังจุดใหม่ (x’, y’) ดังนี ้
6-1
คูล่ าดับระยะการเลื่อน อาจเรี ยกว่าทรานสเลชันเวกเตอร์ (translation
vector) หรื อชิฟต์เวกเตอร์ (shift vector)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
6
การเลื่อนตาแหน่ ง (Translation)
สามารถเปลี่ยนสมการการเลื่อนตาแหน่ง (6-1) เป็ นสมการเมทริกซ์
โดยใช้ เวกเตอร์ แทนตาแหน่งโคออร์ ดิเนตและทรานสเลชันเวกเตอร์ เป็ น
6-2
จากสมการ 2 มิติ เขียนในรูปแบบเมทริกซ์ ได้ เป็ น
6-3
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
7
การเลื่อนตาแหน่ ง (Translation)
ตาแหน่งเดิม และตาแหน่งใหม่ของออปเจ็กต์ที่ใช้ ทรานสเลชันเวกเตอร์ เป็ น (-3, 4)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
8
การเลื่อนตาแหน่ ง (Translation)
คาสัง่ OpenGL ที่ใช้ ในการเลื่อนออปเจ็กต์คือ
glTranslatef (Glfloat x, Glfloat y, Glfloat z);
โดยที่ x คือทรานสเลชันเวกเตอร์ ในแนวแกน x
y คือทรานสเลชันเวกเตอร์ ในแนวแกน y
z คือทรานสเลชันเวกเตอร์ ในแนวแกน z
ดูตวั อย่างโค้ ดการเลื่อนตาแหน่ง ex06_01.cpp
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
9
การย่ อ/ขยายภาพ (Scaling)
การย่อ/ขยาย (Scaling) คือการเปลี่ยนขนาดของออปเจ็กต์ให้ มีขนาด
ใหญ่ขึ ้นหรื อเล็กลง
ตาแหน่งออปเจ็กต์ที่เกิดจากการย่อ/ขยายอาจจะอยูใ่ นจอภาพ นอก
จอภาพ หรื ออยูใ่ นจอภาพบางส่วนก็ได้ ขึ ้นอยูก่ บั ขนาดของจอภาพที่
ทาให้ เกิดการขริบภาพ (clipping)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
10
การย่ อ/ขยายภาพ (Scaling)
ขยายตามแนว
แกน y
รูปเดิม
ขยายตามแนว
แกน x และแกน Y
ขยายตามแนว
แกน x
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
11
การย่ อ/ขยายภาพ (Scaling)
การย่อ/ขยายออปเจ็กต์ทางเรขาคณิตใด ๆ ทาได้ โดยการคูณตาแหน่ง
(x, y) ด้ วยค่าสเกลลิงเฟคเตอร์ (Scaling factor) Sx, Sy ทาให้ ได้
โคออร์ ดิเนต (x’, y’) ดังนี ้
6-4
ค่าสเกลลิงแฟคเตอร์ Sx จะทาการย่อ/ขยายออปเจ็กต์ตามแนวแกน x
ส่วนค่าสเกลลิงแฟคเตอร์ Sy จะทาการย่อขยายออปเจ็กต์ตาม
แนวแกน y
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
12
การย่ อ/ขยายภาพ (Scaling)
สมการ 6-4 สามารถเขียนให้ เป็ นรูปเมทริกซ์ได้ เป็ น
6-5
หรือ
6-5
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
13
การย่ อ/ขยายภาพ (Scaling)
คุณสมบัติของสเกลลิงแฟคเตอร์ มีดงั นี ้
ถ้ าค่าสเกลลิงแฟคเตอร์ = 1 ทาให้ ขนาดของออปเจ็กต์ไม่เปลี่ยนแปลง
ถ้ าค่าสเกลลิงแฟคเตอร์ < 1 จะเป็ นการย่อขนาดออปเจ็กต์
ถ้ าค่าสเกลลิงแฟคเตอร์ > 1 จะเป็ นการขยายขนาดออปเจ็กต์
ถ้ าค่าสเกลลิงแฟคเตอร์ Sx = Sy จะเรี ยกว่า uniform scaling
ถ้ าค่าสเกลลิงแฟคเตอร์ Sx Sy จะเรี ยกว่า differential scaling
การแปลงออปเจ็กต์ตามสมการ 6-5 เป็ นทังการย่
้
อ/ขยายและเปลี่ยนตาแหน่ง
ถ้ าค่าสเกลลิงแฟคเตอร์ < 1 ตาแหน่งใหม่จะเข้ าใกล้ จดุ กาเนิด (origin)
ถ้ าค่าสเกลลิงแฟคเตอร์ > 1 ตาแหน่งใหม่จะออกห่างจากจุดกาเนิด (origin)
บางระบบสามารถใช้ ค่าสเกลลิงแฟคเตอร์ เป็ นค่าลบได้ ซึง่ จะได้ ผลเป็ นการ
สะท้ อน (reflect) ตามแกนที่กาหนด
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
14
การย่ อ/ขยายภาพ (Scaling)
รูปสี่เหลี่ยมเมื่อ
กาหนดสเกลแฟคเตอร์
sx = 2 และ sy = 1
รูปสี่เหลี่ยมจัตรุ ัสเมื่อ
กาหนดสเกลแฟคเตอร์
sx = sy = 0.5
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
15
การย่ อ/ขยายภาพ (Scaling)
การย่อ/ขยายแบบสัมพัทธ์ (Relative Scaling) คือการย่อ/ขยาย
ออปเจ็กต์ โดยกาหนดจุดอ้ างอิงเป็ นจุดคงที่ (fixed point)
ไม่มีการเปลี่ยนแปลงทังก่
้ อนและหลังการย่อขยาย เราสามารถเลือก
จุดอ้ างอิง (xf, yf) ได้ อย่างอิสระ
เมื่อเลือกจุดได้ แล้ ว ก็ทาการปรับขนาดโดยการย่อ/ขยายระยะทาง
ระหว่างจุดของออปเจ็กต์กบั จุดอ้ างอิง
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
16
การย่ อ/ขยายภาพ (Scaling)
การย่อ/ขยายแบบสัมพัทธ์ที่เลือกจุดอ้ างอิง (xf, yf)
ระยะจากเวอร์ เท็กซ์ของรูปหลายเหลี่ยมไปยังจุดอ้ างอิงตามสมการ 6-7
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
17
การย่ อ/ขยายภาพ (Scaling)
ตาแหน่งโคออร์ ดิเนต (x, y), โคออร์ ดิเนตของออปเจ็กต์ที่ปรับขนาด
แล้ ว (x’, y’) สามารถคานวณได้ จากความสัมพันธ์
6-7
เขียนสมการ 6-7 ในรูปแบบใหม่ เป็ น
6-8
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
18
การย่ อ/ขยายภาพ (Scaling)
คาสัง่ OpenGL ที่ใช้ ในการย่อย/ขยายออปเจ็กต์คือ
glScalef (Glfloat x, Glfloat y, Glfloat z);
โดยที่ x คือสเกลลิงแฟคเตอร์ ในแนวแกน x
y คือสเกลลิงแฟคเตอร์ ในแนวแกน y
z คือสเกลลิงแฟคเตอร์ ในแนวแกน z
ดูตวั อย่างโค้ ดการย่อ/ขยายออปเจ็กต์ได้ ใน ex06_02.cpp
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
19
การหมุนภาพ (Rotation)
การหมุน (Rotation) คือการเปลี่ยนตาแหน่งของวัตถุไปในแนวเส้ นโค้ งของวงกลม
ในระนาบ xy (ขนานกับโคออร์ ดิเนตของแกน z) จากตาแหน่งหนึง่ ไปอีกตาแหน่ง
หนึง่ โดยไม่เปลี่ยนขนาดของออปเจ็กต์นนั ้
มีการกาหนดตัวแปร 2 ตัวคือ
มุมที่ต้องการหมุน ()
ถ้ าค่าเป็ น + หมายถึงการหมุนทวนเข็มนาฬิกา (CCW : Counter ClockWise)
ถ้ าค่าเป็ น – หมายถึงการหมุนตามเข็มนาฬิกา (CW : ClockWise)
จุดศูนย์กลางการหมุน (rotation point หรื อ pivot point) ตาแหน่ง (xr, yr)
หลังจากที่หมุนออปเจ็กต์ไปแล้ วระยะห่างระหว่างจุดหมุนกับออปเจ็กต์ยงั คงมีคา่
เท่าเดิม ลักษณะของออปเจ็กต์ยงั คงเหมือนเดิม แต่จะวางในตาแหน่งที่ตา่ งไปจาก
เดิมอันเนื่องมาจากการหมุน
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
20
การหมุนภาพ (Rotation)
การหมุนสามารถหมุนได้ ครัง้ ละหลาย ๆ ออปเจ็กต์ก็ได้
จุดหมุนจะอยูภ่ ายในหรื อภายนอกออปเจ็กต์ก็ได้
ตาแหน่งของออปเจ็กต์ที่เกิดจากการหมุนอาจจะอยูใ่ นจอภาพ
นอกจอภาพ หรื ออยูใ่ นจอภาพบางส่วนก็ได้ ขึ ้นอยูก่ บั ขนาดของ
จอภาพที่ทาให้ เกิดการขริบภาพ (clipping)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
21
การหมุนภาพ (Rotation)
การหมุนออปเจ็กต์ที่จดุ หมุน (xr, yr) ด้ วยมุม
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
22
การหมุนภาพ (Rotation)
การหมุนจากจุด (x, y) ไปยังจุด (x’, y’)
โดยมีมมุ สัมพันธ์กบั โคออร์ ดิเนตเดิม และทามุม กับแกน x
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
23
การหมุนภาพ (Rotation)
การหมุนโดยมีจดุ หมุนอยูท่ ี่จดุ กาเนิด โดยที่ความสัมพันธ์ระหว่างมุมที่
เวกเตอร์ ของจุดเดิม (x, y) และจุดที่หมุนไป (x’, y’) ได้ แก่ และ
ตามลาดับ และ r คือรัศมีการหมุน (ขนาดของเวกเตอร์ ของจุดทังสอง)
้
มีคา่ คงที่ สามารถเขียนความสัมพันธ์ได้ เป็ น
6-9
6-10
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
24
การหมุนภาพ (Rotation)
เมื่อแทนค่าสมการที่ 6-10 ลงในสมการ 6-9 จะได้
6-11
จากคอลัมน์เวกเตอร์ 6-2 สามารถเขียนสมการการหมุนในรูปแบบของ
เมทริกซ์ได้ เป็ น
6-12
โดยที่
6-13
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
25
การหมุนภาพ (Rotation)
สาหรับการหมุนออปเจ็กต์ที่มีจดุ หมุนอยูท่ ี่จดุ ใด ๆ
ให้ เลื่อนจุดที่ต้องการหมุนไปที่จดุ กาเนิดก่อน หลังจากนันท
้ าการหมุน
โดยใช้ ความสัมพันธ์การหมุนซึง่ มีจดุ ศูนย์กลางอยูท่ ี่จุดกาเนิด แล้ ว
เลื่อนจุดที่หมุนเรี ยบร้ อยแล้ วกลับมาที่จดุ หมุน
สามารถใช้ สมการ 6-9 เพื่อหาสมการการหมุนของจุดเมื่อกาหนด
จุดหมุนเป็ น (xr, yr)
6-14
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
26
การหมุนภาพ (Rotation)
การหมุนจุดจากตาแหน่ง (x, y) ไปยังตาแหน่ง (x’, y’)
ทามุม กับจุดหมุน (xr, yr)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
27
การหมุนภาพ (Rotation)
คาสัง่ OpenGL ที่ใช้ ในการหมุนออปเจ็กต์คือ
glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
โดยที่ angle คือมุมที่ต้องการให้ หมุน (เป็ นองศา)
x คือ กาหนดให้ หมุนตามแนวแกน x
y คือ กาหนดให้ หมุนตามแนวแกน y
z คือ กาหนดให้ หมุนตามแนวแกน z
ดูตวั อย่างโค้ ดการหมุนออปเจ็กต์ใน ex06_03.cpp
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
28
เมทริกซ์ กับการแปลงทางเรขาคณิต
โปรแกรมกราฟิ กทัว่ ไปมักจะเกี่ยวข้ องกับการแปลงทางเรขาคณิต
หลายครัง้ หลายรูปแบบ
การแปลงทางเรขาคณิตพื ้นฐานทังสามแบบ
้
(การเลื่อน, การย่อ/ขยาย
และการหมุน) สามารถจัดรูปแบบเป็ นสมการทัว่ ไป ได้ เป็ น
6-15
โดยที่
P แทนเวกเตอร์ ตาแหน่งจุดเริ่มต้ น
P’ แทนเวกเตอร์ ตาแหน่งจุดสิ ้นสุด
M1 เป็ นเมทริกซ์ขนาด 2x2 ซึง่ เก็บค่าสัมประสิทธิ์การคูณ
M2 เป็ นเมทริกซ์ขนาด 2x1 ซึง่ เก็บพจน์ที่นาไปบวก
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
29
เมทริกซ์ กับการแปลงทางเรขาคณิต
ตัวอย่างการนาไปประยุกต์ใช้ งาน เช่น
กรณีการเลื่อนออปเจ็กต์ ค่า M1 จะเป็ นเมทริกซ์เอกลักษณ์ (Identity
Matrix)
กรณีการหมุนหรื อการย่อ/ขยายออปเจ็กต์รอบจุดกาเนิด ค่า M2 จะเป็ น 0
ในการแปลงเป็ นชุด ๆ ด้ วยสมการนี ้ เช่น ทาการย่อ/ขยาย การหมุน
การเลื่อนออปเจ็กต์ จะต้ องทาการคานวณเพื่อการแปลงทีละขันตอน
้
เริ่มต้ นด้ วยการย่อ/ขยายตาแหน่งก่อน หลังจากนันจึ
้ งทาการหมุน แล้ ว
ท้ ายสุดจะเป็ นการเลื่อน สาหรับคาสัง่ ใน OpenGL จะทาย้ อนกลับจาก
ท้ ายไปหาคาสัง่ แรก
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
30
เมทริกซ์ กับการแปลงทางเรขาคณิต
การแปลงด้ วยสมการ 6-15 หลายครัง้ จะทาให้ เกิดข้ อผิดพลาดสะสม
สาหรับตัวเลขจานวนเต็ม
ดังนันจึ
้ งจาเป็ นต้ องรวมพจน์ M1 และ M2 เข้ าด้ วยกัน
หลักการของวิธีนี ้ คือการแปลงทางเรขาคณิตในรูปของการคูณกันของ
เมทริกซ์ซงึ่ ทาได้ โดยขยายพจน์ที่เป็ นเมทริกซ์ขนาด 2x2 3x3 และ
2x1 3x1 ตามลาดับ
ทาได้ โดยจัดโคออร์ ดิเนต (x, y) ในรูปของเทอม (xh, yh, h)
เรี ยกว่า “โฮมจีเนียสโคออร์ ดิเนต” (Homogeneous Coordinates) โดย
ค่าพารามิเตอร์ h จะไม่เท่ากับ 0 โดยที่
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
31
เมทริกซ์ กับการแปลงทางเรขาคณิต
6-16
โฮโมจีเนียสโคออร์ ดิเนตอาจเขียนได้ ใหม่เป็ น (x • h, y • h, h)
สามารถเลือกค่า h เป็ นจานวนจริงบวกใด ๆ ได้ แต่เพื่อความสะดวก
มักจะเลือกให้ h = 1 ซึง่ จะได้ โคออร์ ดิเนตเป็ น (x, y, 1)
สามารถจัดรูปแบบเมทริกซ์การแปลงใหม่เป็ น
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
32
เมทริกซ์ กับการแปลงทางเรขาคณิต
การเลื่อน (Translation)
6-17
หรือเขียนแบบสัน้ เป็ น
6-18
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
33
เมทริกซ์ กับการแปลงทางเรขาคณิต
การย่อ/ขยาย (Scaling)
6-19
หรือเขียนแบบสัน้ เป็ น
6-20
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
34
เมทริกซ์ กับการแปลงทางเรขาคณิต
การหมุน (Rotation)
6-21
หรือเขียนแบบสัน้ เป็ น
6-22
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
35
การแปลงอินเวิร์ส (Inverse Transformation)
การแปลงอินเวิร์ส (Inverse Transformation) สามารถใช้ หลักการทาง
เมทริกซ์พิสจู น์ได้ โดยการหาอินเวิร์สเมทริกส์ ด้ วยคุณสมบัติของ
เมทริกซ์ อาจกล่าวได้ วา่
การหาอินเวิร์สทาได้ โดย
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
36
การแปลงอินเวิร์ส (Inverse Transformation)
หาดีเทอร์ มิแนนต์
det T = [(111) + (0ty0) + (tx00)] – [(01tx) + (0ty1) + (100)]
det = 1
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
37
การแปลงอินเวิร์ส (Inverse Transformation)
หา adj(T) โดยหา cofactor แต่ละตัว
เนื่องจาก
ตัวอย่ างการหา c22 จาก
โดยที่
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
38
การแปลงอินเวิร์ส (Inverse Transformation)
ดังนัน้
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
39
การแปลงอินเวิร์ส (Inverse Transformation)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
40
การแปลงอินเวิร์ส (Inverse Transformation)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
41
การแปลงอินเวิร์ส (Inverse Transformation)
ดังนัน้
สาหรับการเลื่อน 6-17 พิสูจน์ ได้ ว่า
6-23
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
42
การแปลงอินเวิร์ส (Inverse Transformation)
ดังนัน้
6-24
จากอินเวิร์สเมทริกซ์ ในการเลื่อนออปเจ็กต์ ตีความว่ า การแปลง
ออปเจ็กต์ ท่ เี ลื่อนไปกลับไปยังจุดเดิม ทาได้ โดยเลื่อนออปเจ็กต์ นัน้
ในทิศทางตรงกันข้ าม
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
43
การแปลงอินเวิร์ส (Inverse Transformation)
สาหรับการย่ อ/ขยาย 6-19 พิสูจน์ ได้ ว่า
6-25
ดังนัน้
6-26
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
44
การแปลงอินเวิร์ส (Inverse Transformation)
สาหรับการหมุน 6-21 พิสูจน์ ได้ ว่า
6-27
ดังนัน้
6-28
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
45
การแปลงแบบรวม (Composite Transformation)
เนื่องจากการแปลงทางเรขาคณิตอยูใ่ นรูปของเมทริกซ์
สามารถเชื่อมโยงชุดของการแปลงแบบต่าง ๆ เข้ าด้ วยกันด้ วยวิธีการ
แปลงรวม (Composite Transformation) เรี ยกรูปแบบว่าเป็ น
Composite หรื อ Concatenation ของเมทริกซ์
เนื่องจากการแสดงตาแหน่งโคออร์ ดิเนตเป็ นคอลัมน์เมทริกซ์แบบโฮโม
จีเนียส ต้ องทาการคูณคอลัมน์เมทริกซ์ด้วยเมทริกซ์ของการแปลง
เนื่องจากตาแหน่งต่าง ๆ บนจอภาพปกติจะมาจากการแปลง ทาให้ การ
คูณเมทริกซ์ของการแปลงก่อนจะทาการแปลงรวมจึงมีประสิทธิภาพ
มากกว่า ถ้ าต้ องการแปลงตาแหน่งจุด P สองครัง้
ตาแหน่งของการแปลงคานวณได้ จาก
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
46
การแปลงแบบรวม (Composite Transformation)
ตาแหน่งของการแปลงคานวณได้ จาก
6-29
การแปลงตาแหน่งโคอร์ ดิเนตใช้ เมทริกซ์ M จะดีกว่าการใช้ M1 แล้ ว
ตามด้ วย M2
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
47
การแปลงแบบรวม (Composite Transformation)
การแปลงรวมของการเลื่อน (Composite Translations)
ถ้ าต้ องการเลื่อนออปเจ็กต์ตาแหน่ง P 2 ครัง้ ด้ วย T1(t1x, t1y) และ
T2(t2x, t2y) คานวณตาแหน่งสุดท้ ายของการแปลงแบบเลื่อน P’ ได้ ด้วย
6-30
เมื่อ P และ P’ แสดงด้ วยเมทริกซ์ 3x1 ของคอลัมน์เมทริกซ์แบบโฮโมจีเนียส
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
48
การแปลงแบบรวม (Composite Transformation)
เนื่องจาก
ดังนัน้
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
49
การแปลงแบบรวม (Composite Transformation)
6-31
หรือ
6-32
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
50
การแปลงแบบรวม (Composite Transformation)
การแปลงรวมของการย่ อ/ขยาย (Composite Scaling)
การแปลงรวมของการย่อ/ขยายออปเจ็กต์ 2 ครัง้ ด้ วย S1(s1x, s1y) และ
S2(s2x, s2y) ทาให้ ได้ ตาแหน่งสุดท้ ายของการแปลงแบบย่อ/ขยายจาก
6-33
6-34
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
51
การแปลงแบบรวม (Composite Transformation)
การแปลงรวมของการหมุน (Composite Rotation)
การหมุนออปเจ็กต์ 2 ครัง้ ด้ วย R (1) และ R (2) ทาให้ ได้ ตาแหน่ง
สุดท้ ายของการแปลงแบบหมุน P’ จาก
6-35
เนื่องจาก
6-36
จากสมการ 6-35 ได้
6-37
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
52
การแปลงแบบรวม (Composite Transformation)
การหมุนรอบจุดอ้ างอิง (General Pivot-Point Rotation)
การใช้ เมทริกซ์ในการแปลงแบบรวม เราสามารถทาการหมุนออปเจ็กต์
รอบจุดอ้ างอิง (Pivot-Point) ใด ๆ ตามขันตอนดั
้
งนี ้
เลื่อนออปเจ็กต์เพื่อให้ จดุ อ้ างอิง (xr, yr) เลื่อนไปที่จดุ กาเนิด
หมุนออปเจ็กต์นนรอบจุ
ั้
ดกาเนิด
เลื่อนออปเจ็กต์กลับมาที่จดุ อ้ างอิงเดิม
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
53
การแปลงแบบรวม (Composite Transformation)
การหมุนรอบจุดอ้ างอิง (General Pivot-Point Rotation)
เมทริกซ์สาหรับการแปลงรวมแบบนี ้ทาได้ โดยการทาเมทริกซ์การแปลง
ต่าง ๆ มาเขียนเรี ยงกัน
6-38
เขียนในรูป
6-39
เมื่อ
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
54
การแปลงแบบรวม (Composite Transformation)
การย่ อ/ขยายที่จุดอ้ างอิงคงที่ (General Fixed-Point Scaling)
สามารถสร้ างเมทริกซ์รวมสาหรับการย่อ/ขยายรอบจุดอ้ างอิงตาม
ขันตอนดั
้
งนี ้
เลื่อนออปเจ็กต์เพื่อให้ จดุ อ้ างอิงคงที่ (xf, yf) เลื่อนไปที่จดุ กาเนิด
ย่อ/ขยายออปเจ็กต์ตามปกติอ้างอิงกับจุดกาเนิด
เลื่อนออปเจ็กต์ให้ จดุ อ้ างอิงคงที่กลับมาที่จดุ เดิม
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
55
การแปลงแบบรวม (Composite Transformation)
การย่ อ/ขยายที่จุดอ้ างอิงคงที่ (General Fixed-Point Scaling)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
56
การแปลงแบบรวม (Composite Transformation)
การย่ อ/ขยายที่จุดอ้ างอิงคงที่ (General Fixed-Point Scaling)
6-40
เขียนในรูป
6-41
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
57
การสะท้ อนภาพ (Reflecting)
การสะท้ อนภาพ (Reflecting) เป็ นการแปลงออปเจ็กต์ให้ อยูใ่ นรูป
สะท้ อนเงากระจก (Mirror Image) อ้ างอิงกับเส้ นของการสะท้ อน
กล่าวไดว่าการสะท้ อนของออปเจ็กต์เป็ นการหมุนออปเจ็กต์รอบแกน
สะท้ อนเป็ นมุม 180 องศา
สามารถเลือกแกนสะท้ อนเป็ นเส้ นตรงใด ๆ บนระนาบ xy ก็ได้ รูปต่อไป
เป็ นตัวอย่างการสะท้ อนอ้ างอิงกับแกน x (เส้ นตรง y=0)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
58
การสะท้ อนภาพ (Reflecting)
เขียนในรูปเมทริกซ์
จากเมทริกซ์จะเห็นได้ วา่ จะคงที่พิกดั x
เดิมเอาไว้ ในขณะที่กลับค่า (flip) ค่า
พิกดั y ให้ มีคา่ เป็ นลบ
การสะท้ อนอ้ างอิงกับแกน x
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
59
การสะท้ อนภาพ (Reflecting)
เขียนในรูปเมทริกซ์
จากเมทริกซ์จะเห็นได้ วา่ จะคงที่พิกดั y
เดิมเอาไว้ ในขณะที่กลับค่า (flip) ค่า
พิกดั x ให้ มีคา่ เป็ นลบ
การสะท้ อนอ้ างอิงกับแกน y
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
60
การสะท้ อนภาพ (Reflecting)
การสะท้ อนอ้ างอิงกับแกน z (ตัง้ ฉากระนาบ XY)
ก) รอบจุดกาเนิด ข) รอบจุดใด ๆ
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
61
การสะท้ อนภาพ (Reflecting)
เขียนในรูปเมทริกซ์
6-44
ดูตวั อย่าง ex06_04.cpp ในการสะท้ อนออปเจ็กต์ตามแนวแกน x, y และ z
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
62
การสะท้ อนภาพ (Reflecting)
การสะท้ อนออปเจ็กต์ อ้างอิงกับเส้ น y=x
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
63
การสะท้ อนภาพ (Reflecting)
เมทริกซ์ ในการสะท้ อนออปเจ็กต์ อ้างอิงกับเส้ น y=x
6-45
เมทริกซ์ตามสมการ 6 - 45 เกิดจากชุดของการแปลงรวมการหมุนและ
เมทริกซ์ของการสะท้ อนตามแกน ลาดับการทางานสามารถแสดงได้ ดงั รูป
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
64
การสะท้ อนภาพ (Reflecting)
ก) หมุนตามเข็มนาฬิกา 45 องศา
ข) สะท้ อนอ้ างอิงกับแกน x
ค) หมุนทวนเข็มนาฬิกา 45 องศา
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
65
การสะท้ อนภาพ (Reflecting)
สาหรับการสะท้ อนอ้ างอิงกับเส้ น y=-x ให้ พิจารณาเมทริกซ์ในการ
แปลงตามลาดับคือ 1) มุมตามเข็มนาฬิกา 45 องศา 2) สะท้ อนอ้ างอิง
กับแกน y 3) หมุนทวนเข็มนาฬิกา 45 องศา
การสะท้ อนออปเจ็กต์อ้างอิงกับเส้ น y=-x ส่วนผลลัพธ์ของเมทริกซ์ใน
การแปลงคือ
6-46
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
66
การสะท้ อนภาพ (Reflecting)
การสะท้ อนออปเจ็กต์
อ้ างอิงกับเส้ น y=-x
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
67
การเฉือนภาพ (Shearing)
การเฉือนภาพ (shear) เป็ นการแปลงให้ ออปเจ็กต์มีรูปร่างบิดเบี ้ยว
เสมือนว่าออปเจ็กต์นนประกอบด้
ั้
วยเลเยอร์ บาง ๆ แล้ วได้ รับแรงเฉือน
ที่เรี ยกว่า “shear” ในแต่ละเลเยอร์ ของออปเจ็กต์
การเฉือนมี 2 แบบคือเฉือนในแนวแกน x และแนวแกน y
การเฉือนออปเจ็กต์แนวแกน x เกิดจากเมทริกซ์การแปลงคือ
6-47
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
68
การเฉือนตามแนวแกน x (x-direction)
ตาแหน่งใหม่ของออปเจ็กต์เป็ น
6-48
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
69
การเฉือนตามแนวแกน x (x-direction)
เขียนสมการได้ เป็ น
6-49
ค่าสัมประสิทธิ์การเฉือน shx สามารถกาหนดเป็ นค่าจานวนจริ งได้
หลังจากการเฉือน ตาแหน่งใหม่ของออปเจ็กต์จะเลื่อนไปตาม
แนวนอนตามค่าสัมประสิทธิ์
ตัวอย่างตามรูป เป็ นรูปสี่เหลี่ยมด้ านขนานที่เกิดจากสีเหลี่ยมจัตรุ ัส
แล้ วทาการเฉือนด้ วยสัมประสิทธิ์ shx=2 (ถ้ ากาหนดค่าสัมประสิทธิ์
shx เป็ นลบ จะเป็ นการเลื่อนไปทางซ้ าย)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
70
การเฉือนตามแนวแกน x (x-direction)
ก) รูปสี่เหลี่ยมจัตรุ ัส
ข) รูปสี่เหลี่ยมด้ านขนานที่เกิดจากการเฉือนด้ วยสัมประสิทธิ์ shx = 2
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
71
การเฉือนตามแนวแกน x (x-direction)
การเฉือนออปเจ็กต์โดยอ้ างอิงกับเส้ นใด ๆ ให้ เพิ่มค่าคงที่ลงในพจน์การเลื่อน
6-50
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
72
การเฉือนตามแนวแกน x (x-direction)
6-51
สามารถเขียนเป็ นสมการได้ เป็ น
6-52
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
73
การเฉือนตามแนวแกน x (x-direction))
ก) รูปสี่เหลี่ยมจัตรุ ัส
ข) รูปสี่เหลี่ยมที่เฉือนด้ วยค่าสัมประสิทธิ์ shx = 0.5 อ้ างอิงกับเส้ น yref = -1
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
74
การเฉือนตามแนวแกน y (y-direction)
การเฉือนออปเจ็กต์แนวแกน y เกิดจากเมทริกซ์การแปลงคือ
6-53
เกิดตาแหน่งใหม่ของออปเจ็กต์เป็ น
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
75
การเฉือนตามแนวแกน y (y-direction)
6-54
เขียนเป็ นสมการได้ เป็ น
6-55
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
76
การเฉือนตามแนวแกน y (y-direction)
ก) รูปสี่เหลี่ยมจัตรุ ัส
ข) รูปสี่เหลี่ยมที่เฉือนด้ วยค่าสัมประสิทธิ์ shy = 0.5 อ้ างอิงกับเส้ น xref = -1
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
77
การเลื่อนตาแหน่ ง 3 มิติ (3D Translation)
การแปลงทางเรขาคณิต 3 มิตเิ ป็ นการขยายวิธีการแปลงทาง
เรขาคณิต 2 มิติ โดยมีการพิจารณาโคออร์ ดิเนตของ z
ตาแหน่งใน 3 มิติแสดงได้ ด้วยโฮโมจีเนียสโคออร์ ดิเนตเป็ น 4 คอลัมน์
เวกเตอร์
แต่ละการแปลงทางเรขาคณิตจะเป็ นเมทริกซ์แบบ 4 x 4 เช่นเดียวกับ
2 มิติที่ลาดับการแปลงจะแสดงได้ ด้วยเมทริกซ์เดียว
ตาแหน่ง P(x, y, z) แปลงไปสูต่ าแหน่ง P’ (x’, y’, z’) โดยการบวก
ระยะการเลื่อน tx, ty, tz เข้ ากับโคออร์ ดิเนตของ P
6-56
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
78
การเลื่อนตาแหน่ ง 3 มิติ (3D Translation)
การเลื่อนจุด P(x, y, z) ไปยังจุด P’ (x’, y’, z’) ด้ วยทรานสเลชันเวกเตอร์ T = (tx, ty, tz)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
79
การเลื่อนตาแหน่ ง 3 มิติ (3D Translation)
เขียนในรูปแบบของเมทริกซ์เช่นเดียวกับสมการ 6-17
6-57
หรื อ
6-58
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
80
การเลื่อนตาแหน่ ง 3 มิติ (3D Translation)
การเลื่อนตาแหน่งออปเจ็กต์ 3 มิติ ด้ วยทรานสเลชันเวกเตอร์ T = (tx, ty, tz)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
81
การย่ อ/ขยาย 3 มิติ (3D Scaling)
เมทริกซ์สาหรับการแปลงแบบย่อ/ขยายของตาแหน่ง P(x, y, z) อ้ างอิง
กับจุดกาเนิดในพื ้นที่ 3 มิติจะแปลงไปสูต่ าแหน่ง P’ (x’, y’, z’) จะ
ขยายจากการย่อ/ขยาย 2 มิติ โดยเพิ่มพารามิเตอร์ สาหรับการย่อ/
ขยายสาหรับแกน z ลงในเมทริกซ์การแปลงดังนี ้
6-59
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
82
การย่ อ/ขยาย 3 มิติ (3D Scaling)
สามารถแสดงได้ เป็ น
6-60
สเกลลิงแฟคเตอร์ sx, sy, sz กาหนดเป็ นค่าบวกในการย่อ/ขยายอ้ างอิงกับ
จุดกาเนิดคือ
6-61
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
83
การย่ อ/ขยาย 3 มิติ (3D Scaling)
การย่อ/ขยายตามสมการ 6 - 69 จะเปลี่ยนตาแหน่งของออปเจ็กต์
อ้ างอิงกับจุดกาเนิด
ถ้ าค่าของสเกลลิงแฟคเตอร์ มากกว่า 1 จะย้ ายจุดห่างออกจากจุด
กาเนิดในทิศทางตามแกนของสเกลลิงแฟคเตอร์ นนั ้
ถ้ าค่าสเกลลิงแฟคเตอร์ น้อยกว่า 1 จะย้ ายจุดเข้ าใกล้ จดุ กาเนิดใน
ทิศทางตามแกนของสเกลลิงแฟคเตอร์ นนั ้
ถ้ าค่าสเกลลิงแฟคเตอร์ ทงั ้ 3 ตัวมีคา่ ที่ตา่ งกันจะทาให้ เกิดออปเจ็กต์
มิติของการแปลงเปลี่ยนไป
สามารถคงสภาพของรูปทรงได้ โดยการกาหนดให้ คา่ สเกลลิงแฟค
เตอร์ sx = sy = sz ซึง่ เรี ยกว่า uniform scaling
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
84
การย่ อ/ขยาย 3 มิติ (3D Scaling)
uniform scaling ที่กาหนดค่าสเกลลิงแฟคเตอร์ เป็ น 2
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
85
การย่ อ/ขยาย 3 มิติ (3D Scaling)
เนื่องจากกราฟิ กแพ็คเกจบางตัวมีเพียงรูทีนที่ให้ ยอ่ /ขยายอ้ างอิงกับ
จุดกาเนิดเท่านัน้ แต่สามารถสร้ างการย่อ/ขยายให้ อ้างอิงกับจุดคงที่
(xf, yf, zf) โดยใช้ ลาดับการแปลงดังนี ้
เลื่อนจุดคงที่มาที่จดุ กาเนิด
ประยุกต์ใช้ การแปลงแบบย่อ/ขยายที่อ้างอิงกับจุดกาเนิด
เลื่อนจุดคงที่กลับไปที่ตาแหน่งเดิม
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
86
การย่ อ/ขยาย 3 มิติ (3D Scaling)
เมทริกซ์สาหรับการแปลงที่จดุ คงที่เป็ นการแปลงตามลาดับ เลื่อนย่อ/ขยาย-เลื่อน ดังนี ้
6-62
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
87
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
88
การหมุน 3 มิติ (3D Rotation)
การหมุนออปเจ็กต์ 3 มิติ จะต้ องกาหนดแกนอ้ างอิงสาหรับการหมุน
จากด้ านที่เป็ นบวกของแกนนันไปยั
้ งจุดกาเนิด
สาหรับการหมุนที่มีมมุ เป็ นบวกจะหมายถึงการหมุนทวนเข็มนาฬิกา
(CCW : CounterClockWise) รอบแกนนัน้
ส่วนการหมุนที่มีมมุ เป็ นลบจะเป็ นการหมุนตามเข็มนาฬิกา (CW :
ClockWise)
ข้ อตกลงนี ้เป็ นสิง่ ที่กล่าวไว้ ในการหมุน 2 มิติ ซึง่ มุมที่เป็ นบวกใน
ระนาบ xy จะหมุนทวนเข็มนาฬิการอบจุดอ้ างอิง (แกนที่ขนานกับ
แกน z)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
89
การหมุน 3 มิติ (3D Rotation)
ก) หมุนรอบแกน z
ข) หมุนรอบแกน x
ค) หมุนรอบแกน y
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
90
การหมุนรอบแกน z
สมการการหมุน 2 มิติรอบแกน z สามารถขยายเป็ นการหมุน 3 มิติ คือ
6-63
ค่าพารามิเตอร์ กาหนดมุมของการหมุนรอบแกน z และค่าของ
โคออร์ ดิเนต z จะไม่มีการเปลี่ยนแปลงในการแปลงนี ้
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
91
การหมุนรอบแกน z
เมทริกซ์การหมุนรอบแกน z จะเป็ น
6-64
หรื อ
6-65
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
92
การหมุนรอบแกน z
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
93
การหมุนรอบแกน x
การหมุนรอบแกน x ได้ จากการหมุนเลื่อนพิกดั จากการหมุนรอบแกน z โดย
ที่เปลี่ยน x เป็ น y, y เป็ น z และ z เป็ น x ซึง่ ได้ สมการเป็ น
6-66
ค่าพารามิเตอร์ กาหนดมุมของการหมุนรอบแกน x และค่าของ
โคออร์ ดิเนต x จะไม่มีการเปลี่ยนแปลงในการแปลงนี ้
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
94
การหมุนรอบแกน x
เมทริกซ์การหมุนรอบแกน x จะเป็ น
6-67
หรื อ
6-68
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
95
การหมุนรอบแกน x
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
96
การหมุนรอบแกน y
การหมุนรอบแกน y ได้ จากการหมุนเลื่อนพิกดั จากการหมุนรอบแกน x โดย
ที่เปลี่ยน y เป็ น z, z เป็ น x และ x เป็ น y ซึง่ ได้ สมการเป็ น
6-69
ค่าพารามิเตอร์ กาหนดมุมของการหมุนรอบแกน y และค่าของ
โคออร์ ดิเนต y จะไม่มีการเปลี่ยนแปลงในการแปลงนี ้
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
97
การหมุนรอบแกน y
เมทริกซ์การหมุนรอบแกน y จะเป็ น
6-70
หรื อ
6-71
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
98
การหมุนรอบแกน y
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
99
การสะท้ อน 3 มิติ (3D Reflection)
การสะท้ อน 3 มิติสามารถทาตามความสัมพันธ์กบั แกนสะท้ อน หรื อ
อ้ างอิงกับระนาบสะท้ อน
โดยปกติแล้ วเมทริกซ์สาหรับการสะท้ อน 3 มิติจะเหมือนกับการ
สะท้ อน 2 มิติ
การสะท้ อนที่สมั พันธ์กบั แกนมีคา่ เท่ากับการหมุน180 รอบแกนนัน้
การสะท้ อนที่อ้างอิงกับระนาบก็มีคา่ เท่ากับการหมุน 180 ในพื ้นที่
4 มิติ
เมื่อกาหนดการสะท้ อนเป็ นระนาบ xy, xz หรื อ yz อาจคิดได้ วา่ การ
แปลงเป็ นการเปลี่ยนระหว่างเฟรมแบบมือซ้ ายและเฟรมแบบมือขวา
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
100
การสะท้ อน 3 มิติ (3D Reflection)
การสะท้ อนที่เปลี่ยนจากระบบมือขวาเป็ นระบบมือซ้ าย (หรื อกลับกัน)
จะะเปลี่ยนเครื่ องหมายของโคออร์ ดิเนต z โดยไม่มีการเปลี่ยน
เครื่ องหมายของโคออร์ ดิเนต x และ y เมทริกซ์สาหรับการสะท้ อน
อ้ างอิงกับระนาบ xy คือ
6-72
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
101
การสะท้ อน 3 มิติ (3D Reflection)
การเปลี่ยนโคออร์ ดิเนตจากระบบมือขวาเป็ นระบบมือซ้ าย
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
102
การเฉือน 3 มิติ (3D Shear)
การเฉือน 3 มิติสามารถประยุกต์นามาใช้ ในระบบ 3 มิติในการแปลง
มุมมองสาหรับการโปรเจ็กต์แบบ Perspective
การเฉือนอ้ างอิงกับแกน x หรื อ y เหมือนกับที่กล่าวมาแล้ ว
การเฉือน 3 มิติทาให้ สามารถเฉือนออปเจ็กต์อ้างอิงกับแกน z ได้ ด้วย
6-73
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
103
การเฉือน 3 มิติ (3D Shear)
ค่าพารามิเตอร์ shzx และ shzy สามารถกาหนดเป็ นจานวนจริงได้
ผลของเมทริกซ์นี ้จะเปลี่ยนค่าสาหรับโคออร์ ดิเนต x และ y ด้ วยค่าที่
เป็ นสัดส่วนของระยะจาก zref โดยค่าที่ออกจากโคออร์ ดิเนต z จะไม่
เปลี่ยนแปลง
ในขณะที่ระนาบที่ตงฉากกั
ั้
บแกน z จะถูกเลื่อนไปด้ วยระยะเท่ากับ
z – zref
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
104
การเฉือน 3 มิติ (3D Shear)
ก) การเฉือนอ้ างอิงกับจุดกาเนิด ข) ใช้ เมทริกซ์ 6 - 73 ด้ วย shzx = shzy = 1
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
105
สรุ ปฟั งก์ ชันในการแปลงทางเรขาคณิตของ OpenGL
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
106
สรุ ปฟั งก์ ชันในการแปลงทางเรขาคณิตของ OpenGL
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
107