107
คคคคคคคคคคคคคคคคคคคคคค OpenGL 1 คคคคคคคคคคค คคคคคคคคคคค OpenGL (Computer Graphics using OpenGL)

คอมพิวเตอร์กราฟิกส์ใช้ OpenGL (Computer Graphics using OpenGL)

Embed Size (px)

DESCRIPTION

คอมพิวเตอร์กราฟิกส์ใช้ OpenGL (Computer Graphics using OpenGL). บทที่ 6 การแปลงทางเรขาคณิต ( Geometric Transformation ). เนื่องจากข้อมูลรูปภาพ หรือข้อมูลทางกราฟิกส์ถูกจัดเก็บไว้ในคอมพิวเตอร์ การเปลี่ยนแปลงวิธีการแสดงภาพเหล่านี้ออกทางจอภาพทำให้ได้ภาพในลักษณะที่ต้องการ - PowerPoint PPT Presentation

Citation preview

Page 1: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

1

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้�OpenGL

(Computer Graphics using

OpenGL)

Page 2: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

2

บทท��6การ์แปลงทางเร์ขาคณิ�ต

(Geometric Transformation)

Page 3: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

3

การ์แปลงทางเร์ขาคณิ�ต การ์แปลงทางเร์ขาคณิ�ต เนื่��องจากข้�อมู ลรู ปภาพ หรู�อข้�อมู ลทางกรูาฟิ�กส์�ถู กจ�ดเก�บไว้�ในื่คอมูพ#ว้เตอรู� การูเปล%�ยนื่แปลงว้#ธี%การูแส์ดงภาพเหล)านื่%*ออกทางจอภาพท+าให�ได�ภาพในื่ล�กษณะท%�ต�องการู การูเปล%�ยนื่แปลงนื่%*อาศั�ยการูค+านื่ว้ณทางคณ#ตศัาส์ตรู� โดยเปล%�ยนื่ค)าพารูามู#เตอรู�ต)าง ๆ ท%�เก%�ยว้ข้�องก�บการูส์รู�างภาพเท)านื่�*นื่ เรู%ยกว้#ธี%การูนื่%*ว้)า การูแปลง (Transformation) การูแก�ไข้ หรู�อเปล%�ยนื่แปลงภาพกรูาฟิ�กให�แตกต)างไปจากกรูาฟิ�กเด#มู ท�*งการูย�ายต+าแหนื่)ง (Translation), การูย)อ/ข้ยาย (Scaling), การูหมู2นื่ภาพ (Rotation), การูเฉื�อนื่ภาพ (Shearing) และการูส์ะท�อนื่ภาพ (Reflecting) ปฏิ#บ�ต#การูเหล)านื่%*เรู%ยกว้)า “การูแปลงทางเรูข้าคณ#ต” (Geometric Transformation)

Page 4: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

4

การ์เล��อนต าแหน"ง (Translation) การ์เล��อนต าแหน"ง

(Translation) การูเล��อนื่ต+าแหนื่)ง (Translation) ค�อการูเปล%�ยนื่ต+าแหนื่)งข้องออปเจ�กต�ไปในื่แนื่ว้เส์�นื่ตรูงจากต+าแหนื่)งหนื่5�งไปอ%กต+าแหนื่)งหนื่5�ง อาจกล)าว้ได�ว้)าเป6นื่เปล%�ยนื่ต+าแหนื่)งจากโคออรู�ด#เนื่ตหนื่5�งไปย�งโคออรู�ด#เนื่ตอ��นื่ก�ได�ต+าแหนื่)งออปเจ�กต�ท%�เก#ดจากการูเล��อนื่จะต�องส์�มูพ�นื่ธี�ก�บข้นื่าดจอภาพ ท+าให�ออปเจ�กต�อาจจะอย )ในื่จอภาพ นื่อกจอภาพ หรู�ออย )ในื่จอภาพบางส์)ว้นื่ก�ได� ข้5*นื่อย )ก�บข้นื่าดข้องจอภาพท%�ท+าให�เก#ดการูข้รู#บภาพ (clipping)

Page 5: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

5

การ์เล��อนต าแหน"ง (Translation) การ์เล��อนต าแหน"ง

(Translation)

การูเล��อนื่ต+าแหนื่)งข้องจ2ดและรู ปส์ามูเหล%�ยมูจากต+าแหนื่)งเด#มูไปต+าแหนื่)งใหมู)

Page 6: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

6

การ์เล��อนต าแหน"ง (Translation) การ์เล��อนต าแหน"ง

(Translation) ส์ามูารูถูย�ายจ2ดใด ๆ ในื่ 2 มู#ต# โดยการูบว้ก รูะยะการูเล��อนื่ (Translation Distance) ในื่รู ปข้องเว้กเตอรู�ในื่แต)ละแกนื่ (tx และ ty) จากจ2ดเด#มู (x, y) ไปย�งจ2ดใหมู) (x’, y’) ด�งนื่%*

ค )ล+าด�บรูะยะการูเล��อนื่ อาจเรู%ยกว้)าทรูานื่ส์เลชั�นื่เว้กเตอรู� (translation vector) หรู�อชั#ฟิต�เว้กเตอรู� (shift vector)

-61

Page 7: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

7

การ์เล��อนต าแหน"ง (Translation) การ์เล��อนต าแหน"ง

(Translation) ส์ามูารูถูเปล%�ยนื่ส์มูการูการูเล��อนื่ต+าแหนื่)ง (6-1) เป6นื่ส์มูการูเมูทรู#กซ์�โดยใชั�เว้กเตอรู�แทนื่ต+าแหนื่)งโคออรู�ด#เนื่ตและทรูานื่ส์เลชั�นื่เว้กเตอรู�เป6นื่

-62

จากส์มูการู 2 มู#ต# เข้%ยนื่ในื่รู ปแบบเมูทรู#กซ์� ได�เป6นื่

-63

Page 8: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

8

การ์เล��อนต าแหน"ง (Translation) การ์เล��อนต าแหน"ง

(Translation)

ต+าแหนื่)งเด#มู และต+าแหนื่)งใหมู)ข้องออปเจ�กต�ท%�ใชั�ทรูานื่ส์เลชั�นื่เว้กเตอรู�เป6นื่ (-3, 4)

Page 9: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

9

การ์เล��อนต าแหน"ง (Translation) การ์เล��อนต าแหน"ง

(Translation) ค+าส์��ง OpenGL ท%�ใชั�ในื่การูเล��อนื่ออปเจ�กต�ค�อ

glTranslatef (Glfloat x, Glfloat y, Glfloat z);โดยท%� x ค�อทรูานื่ส์เลชั�นื่เว้กเตอรู�ในื่แนื่ว้แกนื่ x y ค�อทรูานื่ส์เลชั�นื่เว้กเตอรู�ในื่แนื่ว้แกนื่ y z ค�อทรูานื่ส์เลชั�นื่เว้กเตอรู�ในื่แนื่ว้แกนื่ zด ต�ว้อย)างโค�ดการูเล��อนื่ต+าแหนื่)ง ex06_01.cpp

Page 10: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

10

การ์ย่"อ/ขย่าย่ภาพิ (Scaling) การ์ย่"อ/ขย่าย่ภาพิ (Scaling) การูย)อ/ข้ยาย (Scaling) ค�อการูเปล%�ยนื่ข้นื่าดข้องออปเจ�กต�ให�มู%ข้นื่าดใหญ่)ข้5*นื่หรู�อเล�กลง ต+าแหนื่)งออปเจ�กต�ท%�เก#ดจากการูย)อ/ข้ยายอาจจะอย )ในื่จอภาพ นื่อกจอภาพ หรู�ออย )ในื่จอภาพบางส์)ว้นื่ก�ได� ข้5*นื่อย )ก�บข้นื่าดข้องจอภาพท%�ท+าให�เก#ดการูข้รู#บภาพ (clipping)

Page 11: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

11

การ์ย่"อ/ขย่าย่ภาพิ (Scaling)การ์ย่"อ/ขย่าย่ภาพิ (Scaling)

รู ปเด#มูข้ยายตามูแนื่ว้

แกนื่ x

ข้ยายตามูแนื่ว้แกนื่ x และแกนื่ Y

ข้ยายตามูแนื่ว้แกนื่ y

Page 12: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

12

การ์ย่"อ/ขย่าย่ภาพิ (Scaling)การ์ย่"อ/ขย่าย่ภาพิ (Scaling)การูย)อ/ข้ยายออปเจ�กต�ทางเรูข้าคณ#ตใด ๆ ท+าได�โดยการูค ณต+าแหนื่)ง (x, y) ด�ว้ยค)าส์เกลล#งเฟิคเตอรู� (Scaling factor) Sx, Sy ท+าให�ได�โคออรู�ด#เนื่ต (x’, y’) ด�งนื่%*

ค)าส์เกลล#งแฟิคเตอรู� Sx จะท+าการูย)อ/ข้ยายออปเจ�กต�ตามูแนื่ว้แกนื่ x ส์)ว้นื่ค)าส์เกลล#งแฟิคเตอรู� Sy จะท+าการูย)อข้ยายออปเจ�กต�ตามูแนื่ว้แกนื่ y

-64

Page 13: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

13

การ์ย่"อ/ขย่าย่ภาพิ (Scaling)การ์ย่"อ/ขย่าย่ภาพิ (Scaling)ส์มูการู 6-4 ส์ามูารูถูเข้%ยนื่ให�เป6นื่รู ปเมูทรู#กซ์�ได�เป6นื่

-65

-65หร์�อ

Page 14: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

14

การ์ย่"อ/ขย่าย่ภาพิ (Scaling)การ์ย่"อ/ขย่าย่ภาพิ (Scaling)ค2ณส์มูบ�ต#ข้องส์เกลล#งแฟิคเตอรู�มู%ด�งนื่%*

ถู�าค)าส์เกลล#งแฟิคเตอรู� = 1 ท+าให�ข้นื่าดข้องออปเจ�กต�ไมู)เปล%�ยนื่แปลงถู�าค)าส์เกลล#งแฟิคเตอรู� < 1 จะเป6นื่การูย)อข้นื่าดออปเจ�กต�ถู�าค)าส์เกลล#งแฟิคเตอรู� > 1 จะเป6นื่การูข้ยายข้นื่าดออปเจ�กต�ถู�าค)าส์เกลล#งแฟิคเตอรู� Sx = Sy จะเรู%ยกว้)า uniform scalingถู�าค)าส์เกลล#งแฟิคเตอรู� Sx Sy จะเรู%ยกว้)า differential scalingการูแปลงออปเจ�กต�ตามูส์มูการู 6-5 เป6นื่ท�*งการูย)อ/ข้ยายและเปล%�ยนื่ต+าแหนื่)ง ถู�าค)าส์เกลล#งแฟิคเตอรู� < 1 ต+าแหนื่)งใหมู)จะเข้�าใกล�จ2ดก+าเนื่#ด (origin)ถู�าค)าส์เกลล#งแฟิคเตอรู� > 1 ต+าแหนื่)งใหมู)จะออกห)างจากจ2ดก+าเนื่#ด (origin)บางรูะบบส์ามูารูถูใชั�ค)าส์เกลล#งแฟิคเตอรู�เป6นื่ค)าลบได� ซ์5�งจะได�ผลเป6นื่การูส์ะท�อนื่ (reflect) ตามูแกนื่ท%�ก+าหนื่ด

Page 15: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

15

การ์ย่"อ/ขย่าย่ภาพิ (Scaling)การ์ย่"อ/ขย่าย่ภาพิ (Scaling)

รู ปส์%�เหล%�ยมูจ�ต2รู�ส์เมู��อก+าหนื่ดส์เกลแฟิคเตอรู�

sx = sy = 0.5

รู ปส์%�เหล%�ยมูเมู��อก+าหนื่ดส์เกลแฟิคเตอรู� sx = 2 และ sy = 1

Page 16: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

16

การ์ย่"อ/ขย่าย่ภาพิ (Scaling) การ์ย่"อ/ขย่าย่ภาพิ (Scaling) การูย)อ/ข้ยายแบบส์�มูพ�ทธี� (Relative Scaling) ค�อการูย)อ/ข้ยาย ออปเจ�กต� โดยก+าหนื่ดจ2ดอ�างอ#งเป6นื่จ2ดคงท%� (fixed point) ไมู)มู%การูเปล%�ยนื่แปลงท�*งก)อนื่และหล�งการูย)อข้ยาย เรูาส์ามูารูถูเล�อกจ2ดอ�างอ#ง (xf, yf) ได�อย)างอ#ส์รูะ เมู��อเล�อกจ2ดได�แล�ว้ ก�ท+าการูปรู�บข้นื่าดโดยการูย)อ/ข้ยายรูะยะทางรูะหว้)างจ2ดข้องออปเจ�กต�ก�บจ2ดอ�างอ#ง

Page 17: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

17

การ์ย่"อ/ขย่าย่ภาพิ (Scaling)การ์ย่"อ/ขย่าย่ภาพิ (Scaling)

การูย)อ/ข้ยายแบบส์�มูพ�ทธี�ท%�เล�อกจ2ดอ�างอ#ง (xf, yf) รูะยะจากเว้อรู�เท�กซ์�ข้องรู ปหลายเหล%�ยมูไปย�งจ2ดอ�างอ#งตามูส์มูการู 6-7

Page 18: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

18

การ์ย่"อ/ขย่าย่ภาพิ (Scaling) การ์ย่"อ/ขย่าย่ภาพิ (Scaling) ต+าแหนื่)งโคออรู�ด#เนื่ต (x, y), โคออรู�ด#เนื่ตข้องออปเจ�กต�ท%�ปรู�บข้นื่าดแล�ว้ (x’, y’) ส์ามูารูถูค+านื่ว้ณได�จากคว้ามูส์�มูพ�นื่ธี�

6-7

เข้%ยนื่ส์มูการู - 67 ในื่รู ปแบบใหมู) เป6นื่

6-8

Page 19: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

19

การ์ย่"อ/ขย่าย่ภาพิ (Scaling) การ์ย่"อ/ขย่าย่ภาพิ (Scaling) ค+าส์��ง OpenGL ท%�ใชั�ในื่การูย)อย/ข้ยายออปเจ�กต�ค�อ glScalef (Glfloat x, Glfloat y, Glfloat z);โดยท%�x ค�อส์เกลล#งแฟิคเตอรู�ในื่แนื่ว้แกนื่ x

y ค�อส์เกลล#งแฟิคเตอรู�ในื่แนื่ว้แกนื่ y z ค�อส์เกลล#งแฟิคเตอรู�ในื่แนื่ว้แกนื่ zด ต�ว้อย)างโค�ดการูย)อ/ข้ยายออปเจ�กต�ได�ในื่ ex06_02.cpp

Page 20: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

20

การ์หม&นภาพิ (Rotation)การ์หม&นภาพิ (Rotation)การูหมู2นื่ (Rotation) ค�อการูเปล%�ยนื่ต+าแหนื่)งข้องว้�ตถู2ไปในื่แนื่ว้เส์�นื่โค�งข้องว้งกลมูในื่รูะนื่าบ xy (ข้นื่านื่ก�บโคออรู�ด#เนื่ตข้องแกนื่ z) จากต+าแหนื่)งหนื่5�งไปอ%กต+าแหนื่)งหนื่5�ง โดยไมู)เปล%�ยนื่ข้นื่าดข้องออปเจ�กต�นื่�*นื่ มู%การูก+าหนื่ดต�ว้แปรู 2 ต�ว้ค�อ

มู2มูท%�ต�องการูหมู2นื่ () ถู�าค)าเป6นื่ + หมูายถู5งการูหมู2นื่ทว้นื่เข้�มูนื่าฬิ#กา (CCW : Counter ClockWise) ถู�าค)าเป6นื่ – หมูายถู5งการูหมู2นื่ตามูเข้�มูนื่าฬิ#กา (CW : ClockWise)

จ2ดศั นื่ย�กลางการูหมู2นื่ (rotation point หรู�อ pivot point) ต+าแหนื่)ง (xr, yr)

หล�งจากท%�หมู2นื่ออปเจ�กต�ไปแล�ว้รูะยะห)างรูะหว้)างจ2ดหมู2นื่ก�บออปเจ�กต�ย�งคงมู%ค)าเท)าเด#มู ล�กษณะข้องออปเจ�กต�ย�งคงเหมู�อนื่เด#มู แต)จะว้างในื่ต+าแหนื่)งท%�ต)างไปจากเด#มูอ�นื่เนื่��องมูาจากการูหมู2นื่

Page 21: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

21

การ์หม&นภาพิ (Rotation)การ์หม&นภาพิ (Rotation)การูหมู2นื่ส์ามูารูถูหมู2นื่ได�ครู�*งละหลาย ๆ ออปเจ�กต�ก�ได� จ2ดหมู2นื่จะอย )ภายในื่หรู�อภายนื่อกออปเจ�กต�ก�ได�ต+าแหนื่)งข้องออปเจ�กต�ท%�เก#ดจากการูหมู2นื่อาจจะอย )ในื่จอภาพ นื่อกจอภาพ หรู�ออย )ในื่จอภาพบางส์)ว้นื่ก�ได� ข้5*นื่อย )ก�บข้นื่าดข้องจอภาพท%�ท+าให�เก#ดการูข้รู#บภาพ (clipping)

Page 22: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

22

การ์หม&นภาพิ (Rotation)การ์หม&นภาพิ (Rotation)

การูหมู2นื่ออปเจ�กต�ท%�จ2ดหมู2นื่ (xr, yr) ด�ว้ยมู2มู

Page 23: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

23

การ์หม&นภาพิ (Rotation)การ์หม&นภาพิ (Rotation)

การูหมู2นื่จากจ2ด (x, y) ไปย�งจ2ด (x’, y’) โดยมู%มู2มู ส์�มูพ�นื่ธี�ก�บโคออรู�ด#เนื่ตเด#มู และท+ามู2มู ก�บแกนื่ x

Page 24: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

24

การ์หม&นภาพิ (Rotation)การ์หม&นภาพิ (Rotation)การูหมู2นื่โดยมู%จ2ดหมู2นื่อย )ท%�จ2ดก+าเนื่#ด โดยท%�คว้ามูส์�มูพ�นื่ธี�รูะหว้)างมู2มูท%�เว้กเตอรู�ข้องจ2ดเด#มู (x, y) และจ2ดท%�หมู2นื่ไป (x’, y’) ได�แก) และ ตามูล+าด�บ และ r ค�อรู�ศัมู%การูหมู2นื่ (ข้นื่าดข้องเว้กเตอรู�ข้องจ2ดท�*งส์อง) มู%ค)าคงท%� ส์ามูารูถูเข้%ยนื่คว้ามูส์�มูพ�นื่ธี�ได�เป6นื่

-69

-610

Page 25: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

25

การ์หม&นภาพิ (Rotation)การ์หม&นภาพิ (Rotation)เมู��อแทนื่ค)าส์มูการูท%� 6-10 ลงในื่ส์มูการู 6-9 จะได�

-611

จากคอล�มูนื่�เว้กเตอรู� 6-2 ส์ามูารูถูเข้%ยนื่ส์มูการูการูหมู2นื่ในื่รู ปแบบข้องเมูทรู#กซ์�ได�เป6นื่

-612

-613โดย่ท��

Page 26: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

26

การ์หม&นภาพิ (Rotation)การ์หม&นภาพิ (Rotation)ส์+าหรู�บการูหมู2นื่ออปเจ�กต�ท%�มู%จ2ดหมู2นื่อย )ท%�จ2ดใด ๆ ให�เล��อนื่จ2ดท%�ต�องการูหมู2นื่ไปท%�จ2ดก+าเนื่#ดก)อนื่ หล�งจากนื่�*นื่ท+าการูหมู2นื่โดยใชั�คว้ามูส์�มูพ�นื่ธี�การูหมู2นื่ซ์5�งมู%จ2ดศั นื่ย�กลางอย )ท%�จ2ดก+าเนื่#ด แล�ว้เล��อนื่จ2ดท%�หมู2นื่เรู%ยบรู�อยแล�ว้กล�บมูาท%�จ2ดหมู2นื่ส์ามูารูถูใชั�ส์มูการู 6-9 เพ��อหาส์มูการูการูหมู2นื่ข้องจ2ดเมู��อก+าหนื่ด จ2ดหมู2นื่เป6นื่ (xr, yr)

6-14

Page 27: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

27

การ์หม&นภาพิ (Rotation)การ์หม&นภาพิ (Rotation)

การูหมู2นื่จ2ดจากต+าแหนื่)ง (x, y) ไปย�งต+าแหนื่)ง (x’, y’) ท+ามู2มู ก�บจ2ดหมู2นื่ (xr, yr)

Page 28: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

28

การ์หม&นภาพิ (Rotation)การ์หม&นภาพิ (Rotation)ค+าส์��ง OpenGL ท%�ใชั�ในื่การูหมู2นื่ออปเจ�กต�ค�อ

glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);โดยท%�angle ค�อมู2มูท%�ต�องการูให�หมู2นื่ (เป6นื่องศัา)

x ค�อ ก+าหนื่ดให�หมู2นื่ตามูแนื่ว้แกนื่ xy ค�อ ก+าหนื่ดให�หมู2นื่ตามูแนื่ว้แกนื่ yz ค�อ ก+าหนื่ดให�หมู2นื่ตามูแนื่ว้แกนื่ z

ด ต�ว้อย)างโค�ดการูหมู2นื่ออปเจ�กต�ในื่ ex06_03.cpp

Page 29: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

29

เมทร์�กซ์ก*บการ์แปลงทางเร์ขาคณิ�ต

เมทร์�กซ์ก*บการ์แปลงทางเร์ขาคณิ�ต

โปรูแกรูมูกรูาฟิ�กท��ว้ไปมู�กจะเก%�ยว้ข้�องก�บการูแปลงทางเรูข้าคณ#ตหลายครู�*ง หลายรู ปแบบ การูแปลงทางเรูข้าคณ#ตพ�*นื่ฐานื่ท�*งส์ามูแบบ (การูเล��อนื่, การูย)อ/ข้ยาย และการูหมู2นื่) ส์ามูารูถูจ�ดรู ปแบบเป6นื่ส์มูการูท��ว้ไป ได�เป6นื่

โดยท%� P แทนื่เว้กเตอรู�ต+าแหนื่)งจ2ดเรู#�มูต�นื่P’ แทนื่เว้กเตอรู�ต+าแหนื่)งจ2ดส์#*นื่ส์2ด

M1 เป6นื่เมูทรู#กซ์�ข้นื่าด 2x2 ซ์5�งเก�บค)าส์�มูปรูะส์#ทธี#>การูค ณ

M2 เป6นื่เมูทรู#กซ์�ข้นื่าด 2x1 ซ์5�งเก�บพจนื่�ท%�นื่+าไปบว้ก

6-15

Page 30: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

30

เมทร์�กซ์ก*บการ์แปลงทางเร์ขาคณิ�ต

เมทร์�กซ์ก*บการ์แปลงทางเร์ขาคณิ�ต

ต�ว้อย)างการูนื่+าไปปรูะย2กต�ใชั�งานื่ เชั)นื่กรูณ%การูเล��อนื่ออปเจ�กต� ค)า M1 จะเป6นื่เมูทรู#กซ์�เอกล�กษณ� (Identity Matrix)กรูณ%การูหมู2นื่หรู�อการูย)อ/ข้ยายออปเจ�กต�รูอบจ2ดก+าเนื่#ด ค)า M2 จะเป6นื่ 0ในื่การูแปลงเป6นื่ชั2ด ๆ ด�ว้ยส์มูการูนื่%* เชั)นื่ ท+าการูย)อ/ข้ยาย การูหมู2นื่ การูเล��อนื่ออปเจ�กต� จะต�องท+าการูค+านื่ว้ณเพ��อการูแปลงท%ละข้�*นื่ตอนื่ เรู#�มูต�นื่ด�ว้ยการูย)อ/ข้ยายต+าแหนื่)งก)อนื่ หล�งจากนื่�*นื่จ5งท+าการูหมู2นื่ แล�ว้ท�ายส์2ดจะเป6นื่การูเล��อนื่ ส์+าหรู�บค+าส์��งในื่ OpenGL จะท+าย�อนื่กล�บจากท�ายไปหาค+าส์��งแรูก

Page 31: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

31

เมทร์�กซ์ก*บการ์แปลงทางเร์ขาคณิ�ต

เมทร์�กซ์ก*บการ์แปลงทางเร์ขาคณิ�ต

การูแปลงด�ว้ยส์มูการู 6-15 หลายครู�*ง จะท+าให�เก#ดข้�อผ#ดพลาดส์ะส์มูส์+าหรู�บต�ว้เลข้จ+านื่ว้นื่เต�มูด�งนื่�*นื่จ5งจ+าเป6นื่ต�องรูว้มูพจนื่� M1 และ M2 เข้�าด�ว้ยก�นื่ หล�กการูข้องว้#ธี%นื่%* ค�อการูแปลงทางเรูข้าคณ#ตในื่รู ปข้องการูค ณก�นื่ข้องเมูทรู#กซ์�ซ์5�งท+าได�โดยข้ยายพจนื่�ท%�เป6นื่เมูทรู#กซ์�ข้นื่าด 2x2 3x3 และ 2x1 3x1 ตามูล+าด�บ ท+าได�โดยจ�ดโคออรู�ด#เนื่ต (x, y) ในื่รู ปข้องเทอมู (xh, yh, h) เรู%ยกว้)า “โฮมูจ%เนื่%ยส์โคออรู�ด#เนื่ต” (Homogeneous Coordinates) โดยค)าพารูามู#เตอรู� h จะไมู)เท)าก�บ 0 โดยท%�

Page 32: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

32

เมทร์�กซ์ก*บการ์แปลงทางเร์ขาคณิ�ต

เมทร์�กซ์ก*บการ์แปลงทางเร์ขาคณิ�ต

โฮโมูจ%เนื่%ยส์โคออรู�ด#เนื่ตอาจเข้%ยนื่ได�ใหมู)เป6นื่ (x • h, y • h, h) ส์ามูารูถูเล�อกค)า h เป6นื่จ+านื่ว้นื่จรู#งบว้กใด ๆ ได� แต)เพ��อคว้ามูส์ะดว้กมู�กจะเล�อกให� h = 1 ซ์5�งจะได�โคออรู�ด#เนื่ตเป6นื่ (x, y, 1)ส์ามูารูถูจ�ดรู ปแบบเมูทรู#กซ์�การูแปลงใหมู)เป6นื่

-616

Page 33: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

33

เมทร์�กซ์ก*บการ์แปลงทางเร์ขาคณิ�ต

เมทร์�กซ์ก*บการ์แปลงทางเร์ขาคณิ�ต

การูเล��อนื่ (Translation)

-617

-618หร์�อเข�ย่นแบบส์*+นเป,น

Page 34: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

34

เมทร์�กซ์ก*บการ์แปลงทางเร์ขาคณิ�ต

เมทร์�กซ์ก*บการ์แปลงทางเร์ขาคณิ�ต

การูย)อ/ข้ยาย (Scaling)

-619

-620หร์�อเข�ย่นแบบส์*+นเป,น

Page 35: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

35

เมทร์�กซ์ก*บการ์แปลงทางเร์ขาคณิ�ต

เมทร์�กซ์ก*บการ์แปลงทางเร์ขาคณิ�ต

การูหมู2นื่ (Rotation)

-621

-622หร์�อเข�ย่นแบบส์*+นเป,น

Page 36: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

36

การ์แปลงอ�นเว�ร์ส์ (Inverse Transformation)

การ์แปลงอ�นเว�ร์ส์ (Inverse Transformation)

การูแปลงอ#นื่เว้#รู�ส์ (Inverse Transformation) ส์ามูารูถูใชั�หล�กการูทางเมูทรู#กซ์�พ#ส์ จนื่�ได�โดยการูหาอ#นื่เว้#รู�ส์เมูทรู#กส์� ด�ว้ยค2ณส์มูบ�ต#ข้อง เมูทรู#กซ์� อาจกล)าว้ได�ว้)า

การูหาอ#นื่เว้#รู�ส์ท+าได�โดย

Page 37: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

37

การ์แปลงอ�นเว�ร์ส์ (Inverse Transformation)

การ์แปลงอ�นเว�ร์ส์ (Inverse Transformation)

หาด%เทอรู�มู#แนื่นื่ต�

det T = [(111) + (0ty0) + (tx00)] – [(01tx) + (0ty1) + (100)]det = 1

Page 38: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

38

การ์แปลงอ�นเว�ร์ส์ (Inverse Transformation)

การ์แปลงอ�นเว�ร์ส์ (Inverse Transformation)

หา adj(T) โดยหา cofactor แต)ละต�ว้

ต*วอย่"างการ์หา c22 จาก

เน��องจาก

โดย่ท��

Page 39: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

39

การ์แปลงอ�นเว�ร์ส์ (Inverse Transformation)

การ์แปลงอ�นเว�ร์ส์ (Inverse Transformation)

ด�งนื่�*นื่

Page 40: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

40

การ์แปลงอ�นเว�ร์ส์ (Inverse Transformation)

การ์แปลงอ�นเว�ร์ส์ (Inverse Transformation)

Page 41: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

41

การ์แปลงอ�นเว�ร์ส์ (Inverse Transformation)

การ์แปลงอ�นเว�ร์ส์ (Inverse Transformation)

Page 42: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

42

การ์แปลงอ�นเว�ร์ส์ (Inverse Transformation)

การ์แปลงอ�นเว�ร์ส์ (Inverse Transformation)

ด*งน*+น

ส์ าหร์*บการ์เล��อน - 617 พิ�ส์.จนได�ว"า

6-23

Page 43: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

43

การ์แปลงอ�นเว�ร์ส์ (Inverse Transformation)

การ์แปลงอ�นเว�ร์ส์ (Inverse Transformation)

ด*งน*+น

จากอ�นเว�ร์ส์เมทร์�กซ์ในการ์เล��อนออปเจ0กตต�ความว"า การ์แปลงออปเจ0กตท��เล��อนไปกล*บไปย่*งจ&ดเด�ม ท าได�โดย่เล��อนออปเจ0กตน*+นในท�ศทางตร์งก*นข�าม

6-24

Page 44: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

44

การ์แปลงอ�นเว�ร์ส์ (Inverse Transformation)

การ์แปลงอ�นเว�ร์ส์ (Inverse Transformation)

ส์ าหร์*บการ์ย่"อ/ขย่าย่ - 619 พิ�ส์.จนได�ว"า

6-25

6-26 ด*งน*+น

Page 45: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

45

การ์แปลงอ�นเว�ร์ส์ (Inverse Transformation)

การ์แปลงอ�นเว�ร์ส์ (Inverse Transformation)

ส์ าหร์*บการ์หม&น - 621 พิ�ส์.จนได�ว"า

6-27

6-28 ด*งน*+น

Page 46: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

46

การ์แปลงแบบร์วม (Composite Transformation)

การ์แปลงแบบร์วม (Composite Transformation)

เนื่��องจากการูแปลงทางเรูข้าคณ#ตอย )ในื่รู ปข้องเมูทรู#กซ์� ส์ามูารูถูเชั��อมูโยงชั2ดข้องการูแปลงแบบต)าง ๆ เข้�าด�ว้ยก�นื่ด�ว้ยว้#ธี%การูแปลงรูว้มู (Composite Transformation) เรู%ยกรู ปแบบว้)าเป6นื่ Composite หรู�อ Concatenation ข้องเมูทรู#กซ์� เนื่��องจากการูแส์ดงต+าแหนื่)งโคออรู�ด#เนื่ตเป6นื่คอล�มูนื่�เมูทรู#กซ์�แบบโฮโมูจ%เนื่%ยส์ ต�องท+าการูค ณคอล�มูนื่�เมูทรู#กซ์�ด�ว้ยเมูทรู#กซ์�ข้องการูแปลง เนื่��องจากต+าแหนื่)งต)าง ๆ บนื่จอภาพปกต#จะมูาจากการูแปลง ท+าให�การูค ณเมูทรู#กซ์�ข้องการูแปลงก)อนื่จะท+าการูแปลงรูว้มูจ5งมู%ปรูะส์#ทธี#ภาพมูากกว้)า ถู�าต�องการูแปลงต+าแหนื่)งจ2ด P ส์องครู�*ง ต+าแหนื่)งข้องการูแปลงค+านื่ว้ณได�จาก

Page 47: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

47

การ์แปลงแบบร์วม (Composite Transformation)

การ์แปลงแบบร์วม (Composite Transformation)

ต+าแหนื่)งข้องการูแปลงค+านื่ว้ณได�จาก

6-29

การูแปลงต+าแหนื่)งโคอรู�ด#เนื่ตใชั�เมูทรู#กซ์� M จะด%กว้)าการูใชั� M1 แล�ว้ตามูด�ว้ย M2

Page 48: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

48

การ์แปลงแบบร์วม (Composite Transformation)

การ์แปลงแบบร์วม (Composite Transformation)

การ์แปลงร์วมของการ์เล��อน (Composite Translations) ถู�าต�องการูเล��อนื่ออปเจ�กต�ต+าแหนื่)ง P 2 ครู�*งด�ว้ย T1(t1x, t1y) และ T2(t2x, t2y) ค+านื่ว้ณต+าแหนื่)งส์2ดท�ายข้องการูแปลงแบบเล��อนื่ P’ ได�ด�ว้ย

6-30

เมู��อ P และ P’ แส์ดงด�ว้ยเมูทรู#กซ์� 3x1 ข้องคอล�มูนื่�เมูทรู#กซ์�แบบโฮโมูจ%เนื่%ยส์

Page 49: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

49

การ์แปลงแบบร์วม (Composite Transformation)

การ์แปลงแบบร์วม (Composite Transformation)

เน��องจาก

ด*งน*+น

Page 50: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

50

การ์แปลงแบบร์วม (Composite Transformation)

การ์แปลงแบบร์วม (Composite Transformation)

6-31

6-32

หร์�อ

Page 51: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

51

การ์แปลงแบบร์วม (Composite Transformation)

การ์แปลงแบบร์วม (Composite Transformation)

การ์แปลงร์วมของการ์ย่"อ/ขย่าย่ (Composite Scaling) การูแปลงรูว้มูข้องการูย)อ/ข้ยายออปเจ�กต� 2 ครู�*งด�ว้ย S1(s1x, s1y) และ S2(s2x, s2y) ท+าให�ได�ต+าแหนื่)งส์2ดท�ายข้องการูแปลงแบบย)อ/ข้ยายจาก

6-33

6-34

Page 52: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

52

การ์แปลงแบบร์วม (Composite Transformation)

การ์แปลงแบบร์วม (Composite Transformation)

การ์แปลงร์วมของการ์หม&น (Composite Rotation) การูหมู2นื่ออปเจ�กต� 2 ครู�*งด�ว้ย R (1) และ R (2) ท+าให�ได�ต+าแหนื่)งส์2ดท�ายข้องการูแปลงแบบหมู2นื่ P’ จาก

6-35

6-37

เน��องจาก

จากส์มการ์ - 635 ได�

6-36

Page 53: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

53

การ์แปลงแบบร์วม (Composite Transformation)

การ์แปลงแบบร์วม (Composite Transformation)

การ์หม&นร์อบจ&ดอ�างอ�ง (General Pivot-Point Rotation)

การูใชั�เมูทรู#กซ์�ในื่การูแปลงแบบรูว้มู เรูาส์ามูารูถูท+าการูหมู2นื่ออปเจ�กต�รูอบจ2ดอ�างอ#ง (Pivot-Point) ใด ๆ ตามูข้�*นื่ตอนื่ด�งนื่%*

เล��อนื่ออปเจ�กต�เพ��อให�จ2ดอ�างอ#ง (xr, yr) เล��อนื่ไปท%�จ2ดก+าเนื่#ดหมู2นื่ออปเจ�กต�นื่�*นื่รูอบจ2ดก+าเนื่#ดเล��อนื่ออปเจ�กต�กล�บมูาท%�จ2ดอ�างอ#งเด#มู

Page 54: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

54

การ์แปลงแบบร์วม (Composite Transformation)

การ์แปลงแบบร์วม (Composite Transformation)

การ์หม&นร์อบจ&ดอ�างอ�ง (General Pivot-Point Rotation)

เมูทรู#กซ์�ส์+าหรู�บการูแปลงรูว้มูแบบนื่%*ท+าได�โดยการูท+าเมูทรู#กซ์�การูแปลงต)าง ๆ มูาเข้%ยนื่เรู%ยงก�นื่

6-38

6-39 เข�ย่นในร์.ป

เม��อ

Page 55: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

55

การ์แปลงแบบร์วม (Composite Transformation)

การ์แปลงแบบร์วม (Composite Transformation)

การ์ย่"อ/ขย่าย่ท��จ&ดอ�างอ�งคงท�� (General Fixed-Point Scaling)

ส์ามูารูถูส์รู�างเมูทรู#กซ์�รูว้มูส์+าหรู�บการูย)อ/ข้ยายรูอบจ2ดอ�างอ#งตามูข้�*นื่ตอนื่ด�งนื่%*

เล��อนื่ออปเจ�กต�เพ��อให�จ2ดอ�างอ#งคงท%� (xf, yf) เล��อนื่ไปท%�จ2ดก+าเนื่#ดย)อ/ข้ยายออปเจ�กต�ตามูปกต#อ�างอ#งก�บจ2ดก+าเนื่#ดเล��อนื่ออปเจ�กต�ให�จ2ดอ�างอ#งคงท%�กล�บมูาท%�จ2ดเด#มู

Page 56: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

56

การ์แปลงแบบร์วม (Composite Transformation)

การ์แปลงแบบร์วม (Composite Transformation)

การ์ย่"อ/ขย่าย่ท��จ&ดอ�างอ�งคงท�� (General Fixed-Point Scaling)

Page 57: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

57

การ์แปลงแบบร์วม (Composite Transformation)

การ์แปลงแบบร์วม (Composite Transformation)

การ์ย่"อ/ขย่าย่ท��จ&ดอ�างอ�งคงท�� (General Fixed-Point Scaling)

6-40

6-41

เข�ย่นในร์.ป

Page 58: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

58

การ์ส์ะท�อนภาพิ (Reflecting) การ์ส์ะท�อนภาพิ (Reflecting) การูส์ะท�อนื่ภาพ (Reflecting) เป6นื่การูแปลงออปเจ�กต�ให�อย )ในื่รู ปส์ะท�อนื่เงากรูะจก (Mirror Image) อ�างอ#งก�บเส์�นื่ข้องการูส์ะท�อนื่ กล)าว้ไดว้)าการูส์ะท�อนื่ข้องออปเจ�กต�เป6นื่การูหมู2นื่ออปเจ�กต�รูอบแกนื่ส์ะท�อนื่เป6นื่มู2มู 180 องศัาส์ามูารูถูเล�อกแกนื่ส์ะท�อนื่เป6นื่เส์�นื่ตรูงใด ๆ บนื่รูะนื่าบ xy ก�ได� รู ปต)อไป เป6นื่ต�ว้อย)างการูส์ะท�อนื่อ�างอ#งก�บแกนื่ x (เส์�นื่ตรูง y=0)

Page 59: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

59

การ์ส์ะท�อนภาพิ (Reflecting) การ์ส์ะท�อนภาพิ (Reflecting)

เข�ย่นในร์.ปเมทร์�กซ์

การ์ส์ะท�อนอ�างอ�งก*บแกน x

จากเมูทรู#กซ์�จะเห�นื่ได�ว้)าจะคงท%�พ#ก�ด x เด#มูเอาไว้� ในื่ข้ณะท%�กล�บค)า (flip) ค)าพ#ก�ด y ให�มู%ค)าเป6นื่ลบ

Page 60: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

60

การ์ส์ะท�อนภาพิ (Reflecting) การ์ส์ะท�อนภาพิ (Reflecting)

เข�ย่นในร์.ปเมทร์�กซ์

การ์ส์ะท�อนอ�างอ�งก*บแกน y

จากเมูทรู#กซ์�จะเห�นื่ได�ว้)าจะคงท%�พ#ก�ด y เด#มูเอาไว้� ในื่ข้ณะท%�กล�บค)า (flip) ค)าพ#ก�ด x ให�มู%ค)าเป6นื่ลบ

Page 61: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

61

การ์ส์ะท�อนภาพิ (Reflecting) การ์ส์ะท�อนภาพิ (Reflecting)

การ์ส์ะท�อนอ�างอ�งก*บแกน z (ต*+งฉากร์ะนาบ XY)ก) ร์อบจ&ดก าเน�ด ข) ร์อบจ&ดใด ๆ

Page 62: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

62

การ์ส์ะท�อนภาพิ (Reflecting) การ์ส์ะท�อนภาพิ (Reflecting)

เข�ย่นในร์.ปเมทร์�กซ์

ด ต�ว้อย)าง ex06_04.cpp ในื่การูส์ะท�อนื่ออปเจ�กต�ตามูแนื่ว้แกนื่ x, y และ z

6-44

Page 63: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

63

การ์ส์ะท�อนภาพิ (Reflecting) การ์ส์ะท�อนภาพิ (Reflecting)

การ์ส์ะท�อนออปเจ0กตอ�างอ�งก*บเส์�น y=x

Page 64: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

64

การ์ส์ะท�อนภาพิ (Reflecting) การ์ส์ะท�อนภาพิ (Reflecting)

เมทร์�กซ์ในการ์ส์ะท�อนออปเจ0กตอ�างอ�งก*บเส์�น y=x

6-45

เมูทรู#กซ์�ตามูส์มูการู 6 - 45 เก#ดจากชั2ดข้องการูแปลงรูว้มูการูหมู2นื่และ เมูทรู#กซ์�ข้องการูส์ะท�อนื่ตามูแกนื่ ล+าด�บการูท+างานื่ส์ามูารูถูแส์ดงได�ด�งรู ป

Page 65: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

65

การ์ส์ะท�อนภาพิ (Reflecting) การ์ส์ะท�อนภาพิ (Reflecting)

ก ) หมู2นื่ตามูเข้�มูนื่าฬิ#กา 45 องศัา

ข้) ส์ะท�อนื่อ�างอ#งก�บแกนื่ x

ค) หมู2นื่ทว้นื่เข้�มูนื่าฬิ#กา 45 องศัา

Page 66: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

66

การ์ส์ะท�อนภาพิ (Reflecting) การ์ส์ะท�อนภาพิ (Reflecting)

ส์+าหรู�บการูส์ะท�อนื่อ�างอ#งก�บเส์�นื่ y=-x ให�พ#จารูณาเมูทรู#กซ์�ในื่การูแปลงตามูล+าด�บค�อ 1) มู2มูตามูเข้�มูนื่าฬิ#กา 45 องศัา 2) ส์ะท�อนื่อ�างอ#งก�บแกนื่ y 3) หมู2นื่ทว้นื่เข้�มูนื่าฬิ#กา 45 องศัาการูส์ะท�อนื่ออปเจ�กต�อ�างอ#งก�บเส์�นื่ y=-x ส์)ว้นื่ผลล�พธี�ข้องเมูทรู#กซ์�ในื่การูแปลงค�อ

6-46

Page 67: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

67

การ์ส์ะท�อนภาพิ (Reflecting) การ์ส์ะท�อนภาพิ (Reflecting)

การูส์ะท�อนื่ออปเจ�กต�อ�างอ#งก�บเส์�นื่ y=-x

Page 68: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

68

การ์เฉ�อนภาพิ (Shearing) การ์เฉ�อนภาพิ (Shearing)

การูเฉื�อนื่ภาพ (shear) เป6นื่การูแปลงให�ออปเจ�กต�มู%รู ปรู)างบ#ดเบ%*ยว้ เส์มู�อนื่ว้)าออปเจ�กต�นื่�*นื่ปรูะกอบด�ว้ยเลเยอรู�บาง ๆ แล�ว้ได�รู�บแรูงเฉื�อนื่ท%�เรู%ยกว้)า “shear” ในื่แต)ละเลเยอรู�ข้องออปเจ�กต� การูเฉื�อนื่มู% 2 แบบค�อเฉื�อนื่ในื่แนื่ว้แกนื่ x และแนื่ว้แกนื่ y การูเฉื�อนื่ออปเจ�กต�แนื่ว้แกนื่ x เก#ดจากเมูทรู#กซ์�การูแปลงค�อ

6-47

Page 69: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

69

การ์เฉ�อนตามแนวแกน x (x-direction)

การ์เฉ�อนตามแนวแกน x (x-direction)

6-48

ต+าแหนื่)งใหมู)ข้องออปเจ�กต�เป6นื่

Page 70: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

70

การ์เฉ�อนตามแนวแกน x (x-direction)

การ์เฉ�อนตามแนวแกน x (x-direction)

6-49

เข้%ยนื่ส์มูการูได�เป6นื่

ค)าส์�มูปรูะส์#ทธี#>การูเฉื�อนื่ shx ส์ามูารูถูก+าหนื่ดเป6นื่ค)าจ+านื่ว้นื่จรู#งได� หล�งจากการูเฉื�อนื่ ต+าแหนื่)งใหมู)ข้องออปเจ�กต�จะเล��อนื่ไปตามูแนื่ว้นื่อนื่ตามูค)าส์�มูปรูะส์#ทธี#> ต�ว้อย)างตามูรู ป เป6นื่รู ปส์%�เหล%�ยมูด�านื่ข้นื่านื่ท%�เก#ดจากส์%เหล%�ยมูจ�ต2รู�ส์แล�ว้ท+าการูเฉื�อนื่ด�ว้ยส์�มูปรูะส์#ทธี#> shx=2 (ถู�าก+าหนื่ดค)าส์�มูปรูะส์#ทธี#> shx เป6นื่ลบ จะเป6นื่การูเล��อนื่ไปทางซ์�าย)

Page 71: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

71

การ์เฉ�อนตามแนวแกน x (x-direction)

การ์เฉ�อนตามแนวแกน x (x-direction)

ก) รู ปส์%�เหล%�ยมูจ�ต2รู�ส์ ข้) รู ปส์%�เหล%�ยมูด�านื่ข้นื่านื่ท%�เก#ดจากการูเฉื�อนื่ด�ว้ยส์�มูปรูะส์#ทธี#> shx = 2

Page 72: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

72

การ์เฉ�อนตามแนวแกน x (x-direction)

การ์เฉ�อนตามแนวแกน x (x-direction)

การูเฉื�อนื่ออปเจ�กต�โดยอ�างอ#งก�บเส์�นื่ใด ๆ ให�เพ#�มูค)าคงท%�ลงในื่พจนื่�การูเล��อนื่

6-50

Page 73: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

73

การ์เฉ�อนตามแนวแกน x (x-direction)

การ์เฉ�อนตามแนวแกน x (x-direction)

6-52

ส์ามูารูถูเข้%ยนื่เป6นื่ส์มูการูได�เป6นื่

6-51

Page 74: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

74

การ์เฉ�อนตามแนวแกน x (x-direction))

การ์เฉ�อนตามแนวแกน x (x-direction))

ก) รู ปส์%�เหล%�ยมูจ�ต2รู�ส์ ข้) รู ปส์%�เหล%�ยมูท%�เฉื�อนื่ด�ว้ยค)าส์�มูปรูะส์#ทธี#> shx = 0.5 อ�างอ#งก�บเส์�นื่ yref = -1

Page 75: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

75

การ์เฉ�อนตามแนวแกน y (y-direction)

การ์เฉ�อนตามแนวแกน y (y-direction)

การูเฉื�อนื่ออปเจ�กต�แนื่ว้แกนื่ y เก#ดจากเมูทรู#กซ์�การูแปลงค�อ

เก#ดต+าแหนื่)งใหมู)ข้องออปเจ�กต�เป6นื่

6-53

Page 76: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

76

การ์เฉ�อนตามแนวแกน y (y-direction)

การ์เฉ�อนตามแนวแกน y (y-direction)

6-54

เข้%ยนื่เป6นื่ส์มูการูได�เป6นื่

6-55

Page 77: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

77

การ์เฉ�อนตามแนวแกน y (y-direction)

การ์เฉ�อนตามแนวแกน y (y-direction)

ก) รู ปส์%�เหล%�ยมูจ�ต2รู�ส์ข้) รู ปส์%�เหล%�ยมูท%�เฉื�อนื่ด�ว้ยค)าส์�มูปรูะส์#ทธี#> shy =

0.5 อ�างอ#งก�บเส์�นื่ xref = -1

Page 78: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

78

การ์เล��อนต าแหน"ง 3 ม�ต� (3D Translation)

การ์เล��อนต าแหน"ง 3 ม�ต� (3D Translation)

การูแปลงทางเรูข้าคณ#ต 3 มู#ต#เป6นื่การูข้ยายว้#ธี%การูแปลงทางเรูข้าคณ#ต 2 มู#ต# โดยมู%การูพ#จารูณาโคออรู�ด#เนื่ตข้อง z ต+าแหนื่)งในื่ 3 มู#ต#แส์ดงได�ด�ว้ยโฮโมูจ%เนื่%ยส์โคออรู�ด#เนื่ตเป6นื่ 4 คอล�มูนื่�เว้กเตอรู� แต)ละการูแปลงทางเรูข้าคณ#ตจะเป6นื่เมูทรู#กซ์�แบบ 4 x 4 เชั)นื่เด%ยว้ก�บ 2 มู#ต#ท%�ล+าด�บการูแปลงจะแส์ดงได�ด�ว้ยเมูทรู#กซ์�เด%ยว้ ต+าแหนื่)ง P(x, y, z) แปลงไปส์ )ต+าแหนื่)ง P’ (x’, y’, z’) โดยการูบว้กรูะยะการูเล��อนื่ tx, ty, tz เข้�าก�บโคออรู�ด#เนื่ตข้อง P

6-56

Page 79: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

79

การ์เล��อนต าแหน"ง 3 ม�ต� (3D Translation)

การ์เล��อนต าแหน"ง 3 ม�ต� (3D Translation)

การูเล��อนื่จ2ด P(x, y, z ) ไปย�งจ2ด P’ (x’, y’, z’) ด�ว้ยทรูานื่ส์เลชั�นื่เว้กเตอรู� T = (tx, ty, tz)

Page 80: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

80

การ์เล��อนต าแหน"ง 3 ม�ต� (3D Translation)

การ์เล��อนต าแหน"ง 3 ม�ต� (3D Translation)

เข้%ยนื่ในื่รู ปแบบข้องเมูทรู#กซ์�เชั)นื่เด%ยว้ก�บส์มูการู -617

6-57

หรู�อ 6-58

Page 81: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

81

การ์เล��อนต าแหน"ง 3 ม�ต� (3D Translation)

การ์เล��อนต าแหน"ง 3 ม�ต� (3D Translation)

การูเล��อนื่ต+าแหนื่)งออปเจ�กต� 3 มู#ต# ด�ว้ยทรูานื่ส์เลชั�นื่เว้กเตอรู� T = (tx, ty, tz)

Page 82: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

82

การ์ย่"อ/ขย่าย่ 3 ม�ต� (3D Scaling)

การ์ย่"อ/ขย่าย่ 3 ม�ต� (3D Scaling)

เมูทรู#กซ์�ส์+าหรู�บการูแปลงแบบย)อ/ข้ยายข้องต+าแหนื่)ง P(x, y, z) อ�างอ#งก�บจ2ดก+าเนื่#ดในื่พ�*นื่ท%� 3 มู#ต#จะแปลงไปส์ )ต+าแหนื่)ง P’ (x’, y’, z’) จะข้ยายจากการูย)อ/ข้ยาย 2 มู#ต# โดยเพ#�มูพารูามู#เตอรู�ส์+าหรู�บการูย)อ/ข้ยายส์+าหรู�บแกนื่ z ลงในื่เมูทรู#กซ์�การูแปลงด�งนื่%*

6-59

Page 83: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

83

การ์ย่"อ/ขย่าย่ 3 ม�ต� (3D Scaling)

การ์ย่"อ/ขย่าย่ 3 ม�ต� (3D Scaling)

ส์ามูารูถูแส์ดงได�เป6นื่

6-61

ส์เกลล#งแฟิคเตอรู� sx, sy, sz ก+าหนื่ดเป6นื่ค)าบว้กในื่การูย)อ/ข้ยายอ�างอ#งก�บจ2ดก+าเนื่#ดค�อ

6-60

Page 84: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

84

การ์ย่"อ/ขย่าย่ 3 ม�ต� (3D Scaling)

การ์ย่"อ/ขย่าย่ 3 ม�ต� (3D Scaling)

การูย)อ/ข้ยายตามูส์มูการู 6 - 69 จะเปล%�ยนื่ต+าแหนื่)งข้องออปเจ�กต�อ�างอ#งก�บจ2ดก+าเนื่#ด ถู�าค)าข้องส์เกลล#งแฟิคเตอรู�มูากกว้)า 1 จะย�ายจ2ดห)างออกจากจ2ดก+าเนื่#ดในื่ท#ศัทางตามูแกนื่ข้องส์เกลล#งแฟิคเตอรู�นื่�*นื่ ถู�าค)าส์เกลล#งแฟิคเตอรู�นื่�อยกว้)า 1 จะย�ายจ2ดเข้�าใกล�จ2ดก+าเนื่#ดในื่ท#ศัทางตามูแกนื่ข้องส์เกลล#งแฟิคเตอรู�นื่�*นื่ ถู�าค)าส์เกลล#งแฟิคเตอรู�ท�*ง 3 ต�ว้มู%ค)าท%�ต)างก�นื่จะท+าให�เก#ดออปเจ�กต�มู#ต#ข้องการูแปลงเปล%�ยนื่ไป ส์ามูารูถูคงส์ภาพข้องรู ปทรูงได�โดยการูก+าหนื่ดให�ค)าส์เกลล#งแฟิคเตอรู� sx = sy = sz ซ์5�งเรู%ยกว้)า uniform scaling

Page 85: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

85

การ์ย่"อ/ขย่าย่ 3 ม�ต� (3D Scaling)

การ์ย่"อ/ขย่าย่ 3 ม�ต� (3D Scaling)

uniform scaling ท%�ก+าหนื่ดค)าส์เกลล#งแฟิคเตอรู�เป6นื่ 2

Page 86: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

86

การ์ย่"อ/ขย่าย่ 3 ม�ต� (3D Scaling)

การ์ย่"อ/ขย่าย่ 3 ม�ต� (3D Scaling)

เนื่��องจากกรูาฟิ�กแพ�คเกจบางต�ว้มู%เพ%ยงรู ท%นื่ท%�ให�ย)อ/ข้ยายอ�างอ#งก�บจ2ดก+าเนื่#ดเท)านื่�*นื่ แต)ส์ามูารูถูส์รู�างการูย)อ/ข้ยายให�อ�างอ#งก�บจ2ดคงท%� (xf, yf, zf) โดยใชั�ล+าด�บการูแปลงด�งนื่%*

เล��อนื่จ2ดคงท%�มูาท%�จ2ดก+าเนื่#ดปรูะย2กต�ใชั�การูแปลงแบบย)อ/ข้ยายท%�อ�างอ#งก�บจ2ดก+าเนื่#ด เล��อนื่จ2ดคงท%�กล�บไปท%�ต+าแหนื่)งเด#มู

Page 87: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

87

การ์ย่"อ/ขย่าย่ 3 ม�ต� (3D Scaling)

การ์ย่"อ/ขย่าย่ 3 ม�ต� (3D Scaling)

เมูทรู#กซ์�ส์+าหรู�บการูแปลงท%�จ2ดคงท%�เป6นื่การูแปลงตามูล+าด�บ เล��อนื่-ย)อ/ข้ยาย-เล��อนื่ ด�งนื่%*

6-62

Page 88: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

88

Page 89: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

89

การ์หม&น 3 ม�ต� (3D Rotation)

การ์หม&น 3 ม�ต� (3D Rotation)

การูหมู2นื่ออปเจ�กต� 3 มู#ต# จะต�องก+าหนื่ดแกนื่อ�างอ#งส์+าหรู�บการูหมู2นื่จากด�านื่ท%�เป6นื่บว้กข้องแกนื่นื่�*นื่ไปย�งจ2ดก+าเนื่#ด ส์+าหรู�บการูหมู2นื่ท%�มู%มู2มูเป6นื่บว้กจะหมูายถู5งการูหมู2นื่ทว้นื่เข้�มูนื่าฬิ#กา (CCW : CounterClockWise) รูอบแกนื่นื่�*นื่ ส์)ว้นื่การูหมู2นื่ท%�มู%มู2มูเป6นื่ลบจะเป6นื่การูหมู2นื่ตามูเข้�มูนื่าฬิ#กา (CW : ClockWise) ข้�อตกลงนื่%*เป6นื่ส์#�งท%�กล)าว้ไว้�ในื่การูหมู2นื่ 2 มู#ต# ซ์5�งมู2มูท%�เป6นื่บว้กในื่รูะนื่าบ xy จะหมู2นื่ทว้นื่เข้�มูนื่าฬิ#การูอบจ2ดอ�างอ#ง (แกนื่ท%�ข้นื่านื่ก�บแกนื่ z)

Page 90: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

90

การ์หม&น 3 ม�ต� (3D Rotation)

การ์หม&น 3 ม�ต� (3D Rotation)

ก) หมู2นื่รูอบแกนื่ z ข้) หมู2นื่รูอบแกนื่ x ค) หมู2นื่รูอบแกนื่ y

Page 91: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

91

การ์หม&นร์อบแกน zการ์หม&นร์อบแกน zส์มูการูการูหมู2นื่ 2 มู#ต#รูอบแกนื่ z ส์ามูารูถูข้ยาย

เป6นื่การูหมู2นื่ 3 มู#ต# ค�อ

6-63

ค)าพารูามู#เตอรู� ก+าหนื่ดมู2มูข้องการูหมู2นื่รูอบแกนื่ z และค)าข้องโคออรู�ด#เนื่ต z จะไมู)มู%การูเปล%�ยนื่แปลงในื่การูแปลงนื่%*

Page 92: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

92

การ์หม&นร์อบแกน zการ์หม&นร์อบแกน zเมูทรู#กซ์�การูหมู2นื่รูอบแกนื่ z จะเป6นื่

6-64

หรู�อ 6-65

Page 93: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

93

การ์หม&นร์อบแกน zการ์หม&นร์อบแกน z

Page 94: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

94

การ์หม&นร์อบแกน xการ์หม&นร์อบแกน xการูหมู2นื่รูอบแกนื่ x ได�จากการูหมู2นื่เล��อนื่พ#ก�ดจากการูหมู2นื่รูอบแกนื่ z โดยท%�เปล%�ยนื่ x เป6นื่ y, y เป6นื่ z และ z เป6นื่ x ซ์5�งได�ส์มูการูเป6นื่

6-66

ค)าพารูามู#เตอรู� ก+าหนื่ดมู2มูข้องการูหมู2นื่รูอบแกนื่ x และค)าข้องโคออรู�ด#เนื่ต x จะไมู)มู%การูเปล%�ยนื่แปลงในื่การูแปลงนื่%*

Page 95: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

95

การ์หม&นร์อบแกน xการ์หม&นร์อบแกน xเมูทรู#กซ์�การูหมู2นื่รูอบแกนื่ x จะเป6นื่

6-67

หรู�อ 6-68

Page 96: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

96

การ์หม&นร์อบแกน xการ์หม&นร์อบแกน x

Page 97: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

97

การ์หม&นร์อบแกน yการ์หม&นร์อบแกน yการูหมู2นื่รูอบแกนื่ y ได�จากการูหมู2นื่เล��อนื่พ#ก�ดจากการูหมู2นื่รูอบแกนื่ x โดยท%�เปล%�ยนื่ y เป6นื่ z, z เป6นื่ x และ x เป6นื่ y ซ์5�งได�ส์มูการูเป6นื่

6-69

ค)าพารูามู#เตอรู� ก+าหนื่ดมู2มูข้องการูหมู2นื่รูอบแกนื่ y และค)าข้องโคออรู�ด#เนื่ต y จะไมู)มู%การูเปล%�ยนื่แปลงในื่การูแปลงนื่%*

Page 98: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

98

การ์หม&นร์อบแกน yการ์หม&นร์อบแกน yเมูทรู#กซ์�การูหมู2นื่รูอบแกนื่ y จะเป6นื่

6-70

หรู�อ 6-71

Page 99: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

99

การ์หม&นร์อบแกน yการ์หม&นร์อบแกน y

Page 100: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

100

การ์ส์ะท�อน 3 ม�ต� (3D Reflection)

การ์ส์ะท�อน 3 ม�ต� (3D Reflection)

การูส์ะท�อนื่ 3 มู#ต#ส์ามูารูถูท+าตามูคว้ามูส์�มูพ�นื่ธี�ก�บแกนื่ส์ะท�อนื่ หรู�ออ�างอ#งก�บรูะนื่าบส์ะท�อนื่ โดยปกต#แล�ว้เมูทรู#กซ์�ส์+าหรู�บการูส์ะท�อนื่ 3 มู#ต#จะเหมู�อนื่ก�บการูส์ะท�อนื่ 2 มู#ต# การูส์ะท�อนื่ท%�ส์�มูพ�นื่ธี�ก�บแกนื่มู%ค)าเท)าก�บการูหมู2นื่180 รูอบแกนื่นื่�*นื่ การูส์ะท�อนื่ท%�อ�างอ#งก�บรูะนื่าบก�มู%ค)าเท)าก�บการูหมู2นื่ 180 ในื่พ�*นื่ท%� 4 มู#ต# เมู��อก+าหนื่ดการูส์ะท�อนื่เป6นื่รูะนื่าบ xy, xz หรู�อ yz อาจค#ดได�ว้)าการูแปลงเป6นื่การูเปล%�ยนื่รูะหว้)างเฟิรูมูแบบมู�อซ์�ายและเฟิรูมูแบบมู�อข้ว้า

Page 101: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

101

การ์ส์ะท�อน 3 ม�ต� (3D Reflection)

การ์ส์ะท�อน 3 ม�ต� (3D Reflection)

การูส์ะท�อนื่ท%�เปล%�ยนื่จากรูะบบมู�อข้ว้าเป6นื่รูะบบมู�อซ์�าย (หรู�อกล�บก�นื่ ) จะะเปล%�ยนื่เครู��องหมูายข้องโคออรู�ด#เนื่ต z โดยไมู)มู%การูเปล%�ยนื่เครู��องหมูายข้องโคออรู�ด#เนื่ต x และ y เมูทรู#กซ์�ส์+าหรู�บการูส์ะท�อนื่อ�างอ#งก�บรูะนื่าบ xy ค�อ

6-72

Page 102: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

102

การ์ส์ะท�อน 3 ม�ต� (3D Reflection)

การ์ส์ะท�อน 3 ม�ต� (3D Reflection)

การูเปล%�ยนื่โคออรู�ด#เนื่ตจากรูะบบมู�อข้ว้าเป6นื่รูะบบมู�อซ์�าย

Page 103: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

103

การ์เฉ�อน 3 ม�ต� (3D Shear)

การ์เฉ�อน 3 ม�ต� (3D Shear)

การูเฉื�อนื่ 3 มู#ต#ส์ามูารูถูปรูะย2กต�นื่+ามูาใชั�ในื่รูะบบ 3 มู#ต#ในื่การูแปลงมู2มูมูองส์+าหรู�บการูโปรูเจ�กต�แบบ Perspective การูเฉื�อนื่อ�างอ#งก�บแกนื่ x หรู�อ y เหมู�อนื่ก�บท%�กล)าว้มูาแล�ว้การูเฉื�อนื่ 3 มู#ต#ท+าให�ส์ามูารูถูเฉื�อนื่ออปเจ�กต�อ�างอ#งก�บแกนื่ z ได�ด�ว้ย 6-73

Page 104: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

104

การ์เฉ�อน 3 ม�ต� (3D Shear)

การ์เฉ�อน 3 ม�ต� (3D Shear)

ค)าพารูามู#เตอรู� shzx และ shzy ส์ามูารูถูก+าหนื่ดเป6นื่จ+านื่ว้นื่จรู#งได� ผลข้องเมูทรู#กซ์�นื่%*จะเปล%�ยนื่ค)าส์+าหรู�บโคออรู�ด#เนื่ต x และ y ด�ว้ยค)าท%�เป6นื่ส์�ดส์)ว้นื่ข้องรูะยะจาก zref โดยค)าท%�ออกจากโคออรู�ด#เนื่ต z จะไมู)เปล%�ยนื่แปลง ในื่ข้ณะท%�รูะนื่าบท%�ต�*งฉืากก�บแกนื่ z จะถู กเล��อนื่ไปด�ว้ยรูะยะเท)าก�บ z – zref

Page 105: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

105

การ์เฉ�อน 3 ม�ต� (3D Shear)

การ์เฉ�อน 3 ม�ต� (3D Shear)

ก) การูเฉื�อนื่อ�างอ#งก�บจ2ดก+าเนื่#ด ข้) ใชั�เมูทรู#กซ์� 6 - 73 ด�ว้ย shzx = shzy = 1

Page 106: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

106

ส์ร์&ปฟิ5งกช้*นในการ์แปลงทางเร์ขาคณิ�ตของ OpenGL

ส์ร์&ปฟิ5งกช้*นในการ์แปลงทางเร์ขาคณิ�ตของ OpenGL

Page 107: คอมพิวเตอร์กราฟิกส์ใช้  OpenGL (Computer Graphics using OpenGL)

คอมพิ�วเตอร์กร์าฟิ�กส์ใช้� OpenGL (Computer Graphics using OpenGL)

107

ส์ร์&ปฟิ5งกช้*นในการ์แปลงทางเร์ขาคณิ�ตของ OpenGL

ส์ร์&ปฟิ5งกช้*นในการ์แปลงทางเร์ขาคณิ�ตของ OpenGL