Tải bản đầy đủ (.doc) (100 trang)

ĐỀ TÀI : XÂY DỰNG GAME GIẢI TRÍ BOMBER-MAN 3D

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.01 MB, 100 trang )

ĐẠI HỌC ĐÀ NẴNG

TRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA CÔNG NGHỆ THÔNG TIN
Tel. (84-511) 736 949, Fax. (84-511) 842 771
Website: itf.ud.edu.vn, E-mail:

LUẬN VĂN TỐT NGHIỆP KỸ SƯ
NGÀNH CÔNG NGHỆ THÔNG TIN
MÃ NGÀNH : 05115

ĐỀ TÀI :
XÂY DỰNG GAME GIẢI TRÍ BOMBER-MAN 3D
Mã số : 06T1-038
Ngày bảo vệ : 15/06 /2011

SINH VIÊN : Trương Quang Thanh
LỚP :
06T1
CBHD :
ThS. Phan Thanh Tao

ĐÀ NẴNG, 06/2011


Nhận xét của giáo viên hướng dẫn
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................


.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................

.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................


Nhận xét của giáo viên phản biện
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................

.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................


LỜI CẢM ƠN
Làm luận văn tốt nghiệp là một giai đoạn cực kỳ quan trọng trong quá
trình học của bất kỳ sinh viên nào, không những mang lại một cái nhìn

định hướng trước khi sinh viên rời khỏi ghế nhà trường mà còn tạo điều
kiện để sinh viên có thể tiếp xúc được với công việc thực tế, vốn có những
điểm khác biệt với việc học ở trường.
Để hoàn thành được luận văn này, đầu tiên em xin chân thành cảm ơn
sự hướng dẫn và chỉ bảo tận tình của thầy Ths Phan Thanh Tao.
Em cũng rất cảm ơn các thầy cô trong khoa Công nghệ Thông tin
trường Đại học Bách Khoa Đà Nẵng đã tận tình giảng dạy, truyền đạt
những kiến thức quý báu trong thời gian qua và tạo điều kiện cho em hoàn
thành luận văn này.
Xin chân thành cảm ơn sự giúp đỡ, động viên của của tất cả các bạn
trong quá trình học tập cũng như quá trình thực hiện luận văn.
Em cũng muốn cảm ơn những người thân trong gia đình đã động viên,
giúp đỡ và tạo điều kiện để hoàn thành luận văn.
Rất mong nhận được sự đóng góp ý kiến của thầy cô và các bạn.
Đà Nẵng 6/2011
Sinh viên thực hiện
Trương Quang Thanh.


LỜI CAM ĐOAN
Tôi xin cam đoan :
1 Những nội dung trong luận văn này là do tôi thực hiện dưới sự
hướng dẫn trực tiếp của thầy Ths. Phan Thanh Tao.
2 Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng tên
tác giả, tên công trình, thời gian, địa điểm công bố.
3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá,
tôi xin chịu hoàn toàn trách nhiệm.
Sinh viên,
Trương Quang Thanh





Mục lục

i

MỤC LỤC
MỞ ĐẦU...........................................................................................................1
.I Giới thiệu đề tài..............................................................................................................1
.II Mục đích.......................................................................................................................1
.III Nhiệm vụ thực hiện và kết quả cần có........................................................................1
.IV Nội dung thực hiện......................................................................................................2

CƠ SỞ LÝ THUYẾT.......................................................................................4
.I CÁC PHÉP BIẾN ĐỔI AFFINE TRONG KHÔNG GIAN ĐỒ HỌA 2D VÀ 3D........4
.I.1. Các phép biến đổi trong không gian hai chiều..................................................4
.I.1.1. Phép tịnh tiến..................................................................................................4
.I.1.2. Phép quay........................................................................................................5
.I.1.3. Phép tỉ lệ..........................................................................................................6
.I.1.4. Phép đối xứng..................................................................................................6
.I.2. Tọa độ đồng nhất, kết hợp các phép biến đổi , các phép biến đổi ngược..........7
.I.2.1. Tọa độ đồng nhất.............................................................................................7
.I.2.2. Các phép biến đổi ngược.................................................................................8
.I.2.3. Kết hợp các phép biến đổi trong không gian hai chiều...................................9
.I.3. Các phép biến đổi trong không gian ba chiều..................................................12
.I.3.1. Phép tịnh tiến................................................................................................12
.I.3.2. Phép quay......................................................................................................13
.I.3.3. Phép tỉ lệ........................................................................................................19
.I.3.4. Phép đối xứng................................................................................................19

.I.4. Một ví dụ về phép biến đổi...............................................................................19
.II THƯ VIỆN OPENGL – CÁC PHÉP BIẾN ĐỔI TRONG OPENGL.........................20
.III OpenGL là gì ?...........................................................................................................20
.III.1.1. OpenGL có thể làm gì và không thể làm gì?..............................................21
.III.1.2. Các tác vụ OpenGL....................................................................................21
.III.1.3. Hoạt động của OpenGL..............................................................................21
.III.1.4. Mô hình hoạt động......................................................................................22
.III.1.5. Yêu cầu hệ thống cho việc dùng OpenGL..................................................23
.III.1.6. Một số thuật ngữ.........................................................................................24
.IV Các phép biến đổi trong Opengl...............................................................................26
.IV.1.1. Tổng quan....................................................................................................26
.IV.1.2. Phép tịnh tiến - Translate............................................................................28
.IV.1.3. Phép xoay – Rotate......................................................................................29
.IV.1.4. Phép kéo dãn - Scale...................................................................................30
.IV.1.5. Thứ tự các phép biến đổi.............................................................................30
.IV.1.6. Phép chiếu phối cảnh và trực giao..............................................................32
.IV.1.7. Một số hàm khác của OpenGL được sử dụng trong chương trình..............34
.V CÁC THUẬT TOÁN TÌM ĐƯỜNG ĐI.....................................................................37
Mô tả các thủ tục tìm kiếm rộng, sâu và sâu dần....................................................39
Thuật giải tìm đường đi có giá thành nhỏ nhất......................................................40
Tìm kiếm với tri thức bổ sung................................................................................40
Tìm đường đi trên đồ thị tổng quát.........................................................................42
.VI Mô hình xây dựng từ 3DsMax..................................................................................43


Mục lục
Định nghĩa về mô hình (module).............................................................................43
Dữ liệu module được export từ 3DsMAX...............................................................45
OBJ WaveFront Format (file *.obj).........................................................................45
Material File Format (*.mtl)....................................................................................48


BÀI TOÁN VÀ GIẢI THUẬT......................................................................53
.I PHÁT BIỂU YÊU CẦU...............................................................................................53
Ý tưởng.....................................................................................................................53
Thông tin tổng quát..................................................................................................53
Một vài hình ảnh game mẫu.....................................................................................54
.II PHÂN TÍCH VÀ THIẾT KẾ......................................................................................55
Xây dựng cấu trúc dữ liệu cho các đối tượng trong game......................................55
Dữ liệu Background.................................................................................................56
Dữ liệu vật lý (Item).................................................................................................60
Lớp Characters.........................................................................................................64
.III CÁC GIẢI THUẬT CHO BÀI TOÁN......................................................................66
Thuật toán tìm đường...............................................................................................66
Thuật toán bom nổ...................................................................................................68
Di chuyển cho các nhân vật.....................................................................................69
Xử lý va chạm..........................................................................................................70
.IV CẤU TRÚC MODULE CỦA GAME.......................................................................70
Mô hình chung của một game..................................................................................70
Khởi tạo – Init()......................................................................................................72
Cập nhật – Update()...............................................................................................72
Vẽ - Paint().............................................................................................................73
Tạm dừng – Pause()................................................................................................73
Giải phóng bộ nhớ - DTOR....................................................................................73
Thoát khỏi chương tình – Exit()..............................................................................74
Phân tích các module cho chương trình..................................................................74
Phân tích mô hình dạng chung...............................................................................74
Chia nhỏ module cho chương trình........................................................................75

CÀI ĐẶT CHƯƠNG TRÌNH.......................................................................77
.I Cài đặt cấu trúc cho game............................................................................................77

.II Cài đặt di chuyển........................................................................................................79
Cài đặt điều khiển cho nhân vật chính.....................................................................79
Cài đặt AI cho quái vật............................................................................................80
.III Cài đặt xử lý bom nổ.................................................................................................81
.IV Xử lý va chạm...........................................................................................................82
.V Lớp Character.............................................................................................................83
.VI Điều khiển bàn phím.................................................................................................83
.VII Một số hình ảnh trong game....................................................................................85

KẾT LUẬN....................................................................................................87
.I Kết quả đạt được..........................................................................................................87
Đánh giá kết quả......................................................................................................87
Khả năng mở rộng....................................................................................................87
.II Hướng phát triển.........................................................................................................88

ii


Mục lục

iii

TÀI LIỆU THAM KHẢO.............................................................................89
[1] Dave Astle Kevin Hawkins. Beginning OpenGL Game Programming. Thomson
Course Technology. 25 Thomson Place, Boston, MA 2004 , 337
tr. 89
[2] Bùi Minh Trường, Lập trình OpenGl với AUX. Trường ĐH Wakayawa Nhật Bản, 114
tr. 89
[3] Trang web />
TÓM TẮT LUẬN VĂN TỐT NGHIỆP.......................................................90



Game giải trí BomberMan 3D

1

MỞ ĐẦU
.I

Giới thiệu đề tài
Trong quá trình thực tập tốt nghiệp và từ việc tìm hiểu thực tế đã cho thấy các

công việc hiện nay hầu hết đều gắn liền với máy vi tính. Một nhu cầu cần thiết luôn
có sau khi kết thúc những công việc này là việc giải trí trên chính chiếc máy vi tính
mà họ sử dụng cho công việc. Việc giải trí có thể như nghe nhạc, xem phim, đọc sách,
… Và có thêm một trò chơi đơn giản nhằm làm phong phú hơn nhu cầu giải trí là một
điều cần thiết.

.II Mục đích
Đề tài là một game nhỏ chơi ít tốn thời gian và sẽ được thực hiện bởi việc ứng
dụng đồ họa 3 chiều, một xu hướng phát triển trong tương lai mà phần lớn các công
ty phần mềm đều hướng đến. Việc sử dụng đồ họa 3 chiều để xây dựng những game
nhỏ mang lại sự mới lạ và đẹp mắt tạo sự hấp dẫn cho người chơi.

.III Nhiệm vụ thực hiện và kết quả cần có
Tìm hiểu về đồ họa 3D và thư viện sẽ sử dụng (Opengl): Hiểu được cơ bản
cách thức hoạt động cũng như các phép toán hình học trong không gian (phép xoay,
phép chiếu, phép kéo dãn, phép tịnh tiến, …)
Tìm hiểu về cấu trúc một mô hình 3D được tạo bởi 3D-Max: Thực hiện đọc dữ
liệu từ mô hình và xây dựng hình ảnh 3D từ nó cho chương trình.

Giải pháp thuật toán cho chương trình: Cách thức xây dựng chương trình hoàn
chỉnh và cấu trúc theo module cho chương trình.

Trương Quang Thanh, 06T1

1


Game giải trí BomberMan 3D

2

Cấu trúc dữ liệu sẽ sử dụng: Cách xây dựng dữ liệu để lưu trong quá trình
chương trình thực thi. (Ma trận dữ liệu, danh sách liên kết, hàng đợi, …)
Giải pháp xây dựng AI cho chương trình: Dựa vào dữ liệu và thuật toán để xây
dựng AI cho game. (Tự động di chuyển, tự động tìm đường, đổi hướng, tăng tốc …)

.IV Nội dung thực hiện
Phần 1: Nghiên cứu cơ sở lý thuyết sử dụng cho đề tài
Nội dung nghiên cứu lý thuyết liên quan bao gồm:
Đồ họa 3D với các phép toán Affine.
Thư viện đồ họa OpenGL với phép toán Affine
Các lý thuyết về thuật toán tìm đường.
Cấu trúc mô hình xây dựng từ 3DsMax
Một số ví dụ tiêu biểu đi kèm.
Phần 2: Phát biểu, mô tả đề tài
Phát biểu, mô tả đề tài bao gồm tài liệu đặt tả và tài liệu phân tích thiết kết dựa
theo lý thuyết nghiên cứu liên quan.
Trình bày hướng giải quyết đề tài, bao gồm thuật toán và các phương pháp lưu
trữ dữ liệu

Cách giải quyết các vấn đề nảy sinh trong quá trình thực hiện đề tài.
Phân tích cấu trúc chương trình để có thể chia nhỏ chương trình thành nhiều
module nhằm tạo thuận lợi cho giai đoạn mã hóa chương trình
Phần 3: Mã hóa chương trình
Dựa vào các phân tích, thiết kế và giải thuật cũng như các module đã có ở phần trên
để thực hiện công việc mã hóa.

Phần 4: Phần kết luận

Trương Quang Thanh, 06T1

2


Game giải trí BomberMan 3D

So sánh với những gì tham khảo được, đánh giá kết quả mình đã thực hiện bao
gồm những gì đã hoàn thành, những khó khăn và những gì chưa đạt được. Đồng thời
tìm đánh giá khả năng mở rộng phát triển của đề tài.
Trình bày một số ví dụ cụ thể để minh họa những gì có thể tiếp tục giải quyết
trong tương lai để phát triển thêm đề tài.

Trương Quang Thanh, 06T1

3


Game giải trí BomberMan 3D

CHƯƠNG 1


CƠ SỞ LÝ THUYẾT
.I

CÁC PHÉP BIẾN ĐỔI AFFINE TRONG KHÔNG
GIAN ĐỒ HỌA 2D VÀ 3D
Trong đồ họa máy tính, các phép biến đổi tác động lên một đối tượng hình học

nhằm mục đích thay đổi vị trí, hướng hoặc kích thước của nó được gọi là các phép
biến đổi hình học (geometric transformations) hay còn gọi là các phép biến đổi
mô hình (modeling transformations).Trong không gian đồ họa hai chiều và ba chiều
ta có các phép biến đổi hình học cơ bản là tịnh tiến (translation), phép quay (rotation),
phép tỉ lệ (scaling) và phép đối xứng (reflection). Các phép biến đổi khác là trường
hợp đặc biệt hoặc là sự kết hợp của các phép biến đổi trên. Trong chương này ta sẽ đề
cập đến cơ sở toán học của các phép biến đổi hình học thông qua các phương trình
được biểu diễn dưới dạng ma trận tọa độ.
.I.1.

Các phép biến đổi trong không gian hai chiều
.I.1.1.

Phép tịnh tiến

Phép tịnh tiến theo véc tơ tịnh tiến T(tx, ty) sẽ dời vị trí điểm P(x,y) đến vị trí
mới P'(x',y') theo các phương trình sau: x'=x+tx, y'=y+ty

Hình: 1

Trương Quang Thanh, 06T1


Phép tịnh tiến điểm P theo vecto T

4


Game giải trí BomberMan 3D

Nếu ta kí hiệu tọa độ các điểm và véc tơ như sau:

khi đó phép tịnh tiến được mô tả bởi phương trình:

Phép tịnh tiến không làm thay đổi hình dạng của vật thể (rigid-body).
.I.1.2.

Phép quay

Trong khônggian hai chiều ta xét phép quay vật thể quanh tâm quay (pivot
point) I(xr,yr) với góc quay θ (θ>0 nếu chiều quay ngược chiều kim đồng hồ và θ<0
nếu chiều quay cùng chiều kim đồng hồ).
Trước hết ta xét trường hợp đơn giản nhất đó là phép quay quanh gốc tọa độ,
như trong hình

Hình: 2

Phép quay điểm P quanh gốc một góc θ

Ta có các phương trình biến đổi sau:
x'= r cos(Φ+θ)= r cosΦcosθ- r sinΦsinθ

Trương Quang Thanh, 06T1


5


Game giải trí BomberMan 3D

y'= r sin(Φ+θ)= r cosΦsinθ+ r sinΦcosθ
Mặt khác ta lại có x=r cosΦ và y=r sinΦ. Thay vào hai phương trình trên ta có:
x'= x cosθ- y sinθ
y'= x sinθ+ y cosθ
Do đó phép quay được mô tả bởi phương trình

Trường hợp tâm quay I không trùng gốc toạ độ ta sẽ xét sau.
Phép quay cũng giống như phép tịnh tiến không làm thay đổi hình dáng của vật thể.
.I.1.3.

Phép tỉ lệ

Phép tỉ lệ sẽ nhân hoành độ và tung độ ban đầu với hệ số tỉ lệ sx và sy tương
ứng, cụ thể ta sẽ có x'= x.sx và y'= y.sy. Phương trình của phép biến đổi tỉ lệ có thể
được mô ta như sau:

Khi (sx, sy)≠(1, 1) phép biến đổi tỉ lệ sẽ làm thay đổi hình dáng của vật thể
Trường hợp đặc biệt: Khi sx=1 và sy=-1 phép tỉ lệ trở thành phép đối xứng Reox qua
trục ox, tương tự nếu sx=-1 và sy=1 phép tỉ lệ trở thành phép đối xứng Reoy qua trục
oy.
.I.1.4.

Phép đối xứng


Ta xét trường hợp phép đối xứng qua một đường thẳng d qua gốc toạ độ và tạo
với ox một góc θ như trong hình 3.3.Ta kí hiệu phép biến đổi là Red

Trương Quang Thanh, 06T1

6


Game giải trí BomberMan 3D

Hình: 3

Phép lấy đối xứng điểm P’ của P qua đường thẳng d

Ta có thể thực hiện phép đối xứng trên bằng cách áp dụng liên tiếp các phép biến đổi
theo thứ tự sau đây:
(1) Áp dụng phép quay R(-θ) đưa dường thẳng d về vị trí trục ox
(2) Áp dụng phép lấy đối xứng Sox qua trục ox
(3) Áp dụng phép quay R(θ) đưa dường thẳng d về vị trí trí ban đầu

.I.2.

Tọa độ đồng nhất, kết hợp các phép biến đổi , các phép biến đổi ngược.

(Homogeneous Coordinates, Inverse Transformations and Composite ransformations)
.I.2.1.

Tọa độ đồng nhất

Ta có nhận xét rằng các phép biến đổi mô hình mà ta đã xét đều có thể minh

họa bằng các phương trình ma trận trong đó phép quay và phép tỉ lệ được biểu diễn
bằng phép nhân còn phép tịnh tiến được biểu diễn bằng phép cộng. Vấn đề đặt ra là
khi ta kết hợp nhiều phép biến đổi với nhau thì ta sẽ không thể biểu diễn thông qua
một ma trận tổng thể. Giải pháp cho vấn đề đó là sử dụng tọa độ đồng nhất. Với tọa
độ đồng nhất ta biểu diễn tọa độ của một điểm (x,y) dưới dạng (xh, yh, h) trong đó
x=xh/h và y=yh/h.Với tọa độ đồng nhất ta thấy tọa độ của một điểm có vô số cách
biểu diễn ứng với các giá trị h khác nhau. Để thuận tiện ta sẽ chọn h=1 khi đó điểm

Trương Quang Thanh, 06T1

7


Game giải trí BomberMan 3D

(x, y) sẽ có tọa độ đồng nhất là (x, y, 1). Phương trình của các phép biến đổi hình học
sẽ được biểu diễn hoàn toàn bằng phép nhân ma trận như sau:
Phép tịnh tiến:

Phép quay:

Phép tỉ lệ:

.I.2.2.

Các phép biến đổi ngược

Ta sẽ tìm ma trận biết đổi của các phép biến đổi ngược của các phép biến đổi
mô hình.
Phép biến đổi ngược của phép tịnh tiến theo véc tơ tịnh tiến (tx, ty) sẽ là phép

tịnh tiến theo véc tơ đối (-tx, -ty), ma trận của phép biến đổi là:

Phép biến đổi ngược của phép quay quanh gốc tọa độ một góc θ là phép quay
theo chiều ngược lại hay nói cách khác góc quay là -θ, ma trận của phép biến đổi là:

Trương Quang Thanh, 06T1

8


Game giải trí BomberMan 3D

Tương tự phép biến đổi ngược của phép tỉ lệ với hệ số (sx, sy) là phép biến đổi tỉ lệ
với hệ số (1/sx, 1/sy) và ma trận biến đổi là:

.I.2.3.

Kết hợp các phép biến đổi trong không gian hai chiều

Sử dụng tọa độ đồng nhất cho phép ta biểu diễn các phép biến đổi mô hình
bằng phép nhân ma trận và tìm ma trận biến đổi khi kết hợp các phép biến đổi với
nhau.
a. Kết hợp hai phép tịnh tiến
Giả sử ta áp dụng liên tiếp hai phép tịnh tiến theo hai véc tơ (t1x, t1y) và (t2x, t2y)
khi đó ta có:

Chứng tỏ: T (t1x, t1y).T(t2x, t2y)=T(t1x+t2x, t1y+t2y)
b. Kết hợp hai phép quay
Áp dụng liên tiếp hai phép quay theo hai góc quay θ1 và θ2 với tâm quay là gốc toạ
độ


Trương Quang Thanh, 06T1

9


Game giải trí BomberMan 3D

Chứng tỏ: R(θ2).R(θ1)=R(θ1+θ2)
c. Kết hợp hai phép tỉ lệ
Tương tự như phép tịnh tiến và phép quay, khi kết hợp hai phép biến đổi tỉ lệ
với hệ số là (s1x, s1y) và (s2x, s2y) ta có

d. Phép quay quanh một tâm quay bất kì
Trong mục 1.2 ta xét phép quay có tâm là gốc toạ độ, bây giờ ta xét trường
hợp tổng quát khi tâm quay I(xr, yr) không phải là gốc tọa độ như trong hình 3.3 ta kí
hiệu phép quay đó là R(xr,yr,θ)

Hình: 4

Trương Quang Thanh, 06T1

Phép quay có tâm quay không là gốc tọa độ

10


Game giải trí BomberMan 3D

Ta có thể thực hiện phép quay trên bằng cách áp dụng liên tiếp các phép biến

đổi theo thứ tự sau đây:
(1) Áp dụng phép tịnh tiến T(-xr, -yr) để tịnh tiến tâm quay về gốc toạ độ
(2) Áp dụng phép quay R(θ) quay đối tượng quanh gốc toạ độ một góc θ
(3) Áp dụng phép tịnh tiến T(xr, yr) để tịnh tiến tâm quay từ gốc toạ độ về vị
trí ban đầu
R(xr,yr,θ)=T(xr, yr).R(θ).T(-xr, -yr)

e. Phép đối xứng qua một đường thẳng bất kì
Trong trường hợp tổng quát nếu trục đối xứng là một đường thẳng d bất kì, ta
thay phép đối xứng bằng cách áp dụng lần lượt các phép biến đổi sau:
(1) Áp dụng phép tịnh tiến đưa đường thẳng d về vị trí d' đi qua gốc toạ độ
(2) Áp dụng phép đối xứng qua đường thẳng d'
(3) Áp dụng phép tịnh tiến đưa đường thẳng d' về vị trí đường thẳng d ban đầu
Trường hợp 1: Đường thẳng d có phương trình y=ax+b, giả sử đường thẳng
cắt trục ox tại điểm (x0, y0) như trong hình

Trương Quang Thanh, 06T1

11


Game giải trí BomberMan 3D

Theo nhận xét ở trên ta có
Red=T(x0, y0) . Red' . T(-x0, -y0)
(Red' là phép đối xứng qua một đường thẳng chạy qua gốc toạ độ mà ta đã biết
ở trên)
Trường hợp 2: Đường thẳng d có phương trình y=y0 (d song song với trục
ox), khi đó
Red=T(0, y0) . Reox . T(0, -y0)

Trường hợp 3: Đường thẳng d có phương trình x=x0 (d song song với trục
oy), khi đó
Red=T(x0, 0) . Reoy . T(-x0, 0)
.I.3.

Các phép biến đổi trong không gian ba chiều
Trong không gian ba chiều ta cũng có các phép biến đổi giống như trong không

gian hai chiều. Các phép biến đổi sẽ được minh hoạ qua các ma trận 4x4, toạ độ các
điểm được biểu diễn theo toạ độ đồng nhất nghĩa là thay cho toạ độ (x, y, z) ta sẽ
dùng (x, y, z, 1).
.I.3.1.

Phép tịnh tiến

Giả sử véc tơ tịnh tiến là (tx, ty, tz) khi đó phương trình phép tịnh tiến như sau
(T là ma trận của phép tịnh tiến):

Trương Quang Thanh, 06T1

12


Game giải trí BomberMan 3D

Hình: 5
.I.3.2.

Phép tịnh tiến khối P theo vecto V


Phép quay

Khi thực hiện phép quay trong không gian ba chiều ta cần phải biết trục quay
và góc quay. Chiều của góc quay được xác định theo chiều cùng chiều kim đồng hồ
(chiều âm) và ngược chiều kim đồng hồ (chiều dương) khi mắt nhìn dọc theo trục
quay (ta sẽ gọi đó là hướng nhìn). Ví dụ phép quay minh hoạ trên hình 3.6 là phép
quay theo chiều dương, trục quay ox và hướng nhìn là theo hướng âm của trục ox .

Trương Quang Thanh, 06T1

13


Game giải trí BomberMan 3D

Hình: 6

Phép quay chiều dương, trục quay ox, hướng nhìn là hướng âm trục ox

a. Phép quay quanh các trục toạ độ
Trước hết ta xét các phép quay một góc θ theo các trục ox, oy, oz khi hướng
nhìn là hướng âm của trục đó.
Phép quay quanh trục oz: Ta có thể có công thức biến đổi toạ độ bằng cách mở
rộng công thức phép quay trong không gian hai chiều
x'= x cosθ- y sinθ
y'= x sinθ+ y cosθ
z'=z
Biểu diễn tương đương dưới dạng ma trận như sau

Phép quay quanh trục ox:

x'= x
y'= y cosθ- z sinθ
z'= y sinθ+ z cosθ

Trương Quang Thanh, 06T1

14


Game giải trí BomberMan 3D

Phép quay quanh trục oy:
x'= x cosθ+ z sinθ
y'= y
z'= -x sinθ+ z cosθ

b. Phép quay quanh một trục song song với trục toạ độ
Giả sử trục quay song song với trục ox (các trường hợp còn lại tương tự), ta thực hiện
lần lượt các lệnh biến đổi sau:
(1) Áp dụng phép tịnh tiến T để đưa trục quay về trục ox
(2) Áp dụng phép quay R(θ) quay đối tượng quanh trục ox một góc θ
(3) Áp dụng phép tịnh tiến T-1 để đưa trục quay về vị trí ban đầu
c. Phép quay quanh một trục bất kì
Giả sử trục quay là một đường thẳng d đi qua hai điểm P1(x1, y1, z1) và
P2(x2, y2, z2). Phép quay R(θ) quanh đường thẳng d một góc θ theo hướng nhìn từ
điểm P2 tới P1. Ta thực hiện lần lượt các phép biến đổi sau:
(1) Áp dụng phép tịnh tiến đưa trục quay về vị trí đi qua gốc toạ độ
(2) Áp dụng phép quay đưa trục quay về vị trí trùng với một trục toạ độ
(3) Áp dụng phép quay vật thể quanh trục quay (trục toạ độ)
(4) Áp dụng phép quay đưa trục quay về vị trí tại bước 2

(5) Áp dụng phép quay đưa trục quay về vị trí ban đầu Quá trình được minh
hoạ trong hình đưới

Trương Quang Thanh, 06T1

15


×